Compatibilidad de .NET Framework con las aplicaciones de la Tienda Windows y Windows Runtime.NET Framework Support for Windows Store Apps and Windows Runtime

.NET Framework 4.5.NET Framework 4.5 admite varios escenarios de desarrollo de software con Windows en tiempo de ejecuciónWindows Runtime.The .NET Framework 4.5.NET Framework 4.5 supports a number of software development scenarios with the Windows en tiempo de ejecuciónWindows Runtime. Estos escenarios se clasifican en tres categorías:These scenarios fall into three categories:

En este tema se describe la compatibilidad que proporciona .NET Framework para las tres categorías y se describen los escenarios para los componentes de Windows en tiempo de ejecuciónWindows Runtime.This topic outlines the support that the .NET Framework provides for all three categories, and describes the scenarios for Windows en tiempo de ejecuciónWindows Runtime Components. En la primera sección se incluye información básica sobre la relación entre .NET Framework y Windows en tiempo de ejecuciónWindows Runtime, y se explican algunas singularidades que se pueden encontrar en el sistema de ayuda y el IDE.The first section includes basic information about the relationship between the .NET Framework and the Windows en tiempo de ejecuciónWindows Runtime, and explains some oddities you might encounter in the Help system and the IDE. El segunda sección se describen escenarios para desarrollar Windows en tiempo de ejecuciónWindows Runtime componentes.The second section discusses scenarios for developing Windows en tiempo de ejecuciónWindows Runtime Components.

Conceptos básicosThe Basics

.NET Framework admite los tres escenarios de desarrollo indicados anteriormente proporcionando .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps y admitiendo el propio Windows en tiempo de ejecuciónWindows Runtime.The .NET Framework supports the three development scenarios listed earlier by providing .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps, and by supporting the Windows en tiempo de ejecuciónWindows Runtime itself.

  • Aplicaciones .NET para la tienda Windows proporciona una vista simplificada de las bibliotecas de clases de .NET Framework e incluir solo los tipos y miembros que se puede utilizar para crear Tienda Windows 8.xWindows 8.x Store aplicaciones y Windows en tiempo de ejecuciónWindows Runtime componentes..NET for Windows Store apps provides a streamlined view of the .NET Framework class libraries and include only the types and members you can use to create Tienda Windows 8.xWindows 8.x Store apps and Windows en tiempo de ejecuciónWindows Runtime Components.

    • Cuando se usa Visual Studio (Visual Studio 2012Visual Studio 2012 o posterior) para desarrollar una aplicación de la Tienda Windows 8.xWindows 8.x Store o un componente de Windows en tiempo de ejecuciónWindows Runtime, un conjunto de ensamblados de referencia garantiza que solo se vean los tipos y miembros relevantes.When you use Visual Studio (Visual Studio 2012Visual Studio 2012 or later) to develop a Tienda Windows 8.xWindows 8.x Store app or a Windows en tiempo de ejecuciónWindows Runtime component, a set of reference assemblies ensures that you see only the relevant types and members.

    • Este conjunto racionalizado de API se simplifica aún más mediante la supresión de las características duplicadas en .NET Framework o que duplican características de Windows en tiempo de ejecuciónWindows Runtime.This streamlined API set is simplified further by the removal of features that are duplicated within the .NET Framework or that duplicate Windows en tiempo de ejecuciónWindows Runtime features. Por ejemplo, solo contiene las versiones genéricas de los tipos de colección, y se ha eliminado el modelo de objetos de documento XML a favor del conjunto de API de XML de Windows en tiempo de ejecuciónWindows Runtime.For example, it contains only the generic versions of collection types, and the XML document object model is eliminated in favor of the Windows en tiempo de ejecuciónWindows Runtime XML API set.

    • También se han eliminado las características que simplemente encapsulan la API del sistema operativo, porque resulta sencillo llamar a Windows en tiempo de ejecuciónWindows Runtime desde el código administrado.Features that simply wrap the operating system API are also removed, because the Windows en tiempo de ejecuciónWindows Runtime is easy to call from managed code.

    Para obtener más información sobre la .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps, consulte el información general de aplicaciones de .NET para la tienda Windows en Center.To de desarrollo de Windows que conozca el proceso de selección de API, consulte el aplicaciones .NET para la tienda Windows entrada en .NET blog.To read more about the .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps, see the .NET for Windows Store apps overview in the Windows Dev Center.To read about the API selection process, see the .NET for Windows Store apps entry in the .NET blog.

  • El en tiempo de ejecución de Windows proporciona elementos de interfaz de usuario para una compilación Tienda Windows 8.xWindows 8.x Store aplicaciones y proporciona acceso a características del sistema operativo.The Windows Runtime provides the user interface elements for building Tienda Windows 8.xWindows 8.x Store apps, and provides access to operating system features. Al igual que .NET Framework, Windows en tiempo de ejecuciónWindows Runtime tiene metadatos que permiten a los compiladores de C# y de Visual Basic usar Windows en tiempo de ejecuciónWindows Runtime de la misma forma en que usan las bibliotecas de clases de .NET Framework.Like the .NET Framework, the Windows en tiempo de ejecuciónWindows Runtime has metadata that enables the C# and Visual Basic compilers to use the Windows en tiempo de ejecuciónWindows Runtime the way they use the .NET Framework class libraries. .NET Framework hace que resulte mas fácil de utilizar Windows en tiempo de ejecuciónWindows Runtime ocultando algunas diferencias:The .NET Framework makes it easier to use the Windows en tiempo de ejecuciónWindows Runtime by hiding some differences:

    • Algunas diferencias en los patrones de programación entre .NET Framework y Windows en tiempo de ejecuciónWindows Runtime, como el patrón para agregar y quitar controladores de eventos, están ocultas.Some differences in programming patterns between the .NET Framework and the Windows en tiempo de ejecuciónWindows Runtime, such as the pattern for adding and removing event handlers, are hidden. Simplemente se usa el patrón de .NET Framework.You simply use the .NET Framework pattern.

    • Algunas diferencias de tipos de uso general (por ejemplo, los tipos primitivos y las colecciones) están ocultas.Some differences in commonly used types (for example, primitive types and collections) are hidden. Simplemente se usa el tipo de .NET Framework, como se describe en diferencias que son visibles en el IDE, más adelante en este artículo.You simply use the .NET Framework type, as discussed in Differences That Are Visible in the IDE, later in this article.

La mayoría de las veces, la compatibilidad de .NET Framework Windows en tiempo de ejecuciónWindows Runtime es transparente.Most of the time, .NET Framework support for the Windows en tiempo de ejecuciónWindows Runtime is transparent. En la sección siguiente se describen algunas de las diferencias aparentes entre el código administrado y Windows en tiempo de ejecuciónWindows Runtime.The next section discusses some of the apparent differences between managed code and the Windows en tiempo de ejecuciónWindows Runtime.

.NET Framework y la documentación de referencia de Windows en tiempo de ejecuciónWindows RuntimeThe .NET Framework and the Windows en tiempo de ejecuciónWindows Runtime Reference Documentation

Los conjuntos de documentación de Windows y de .NET Framework son independientes.The Windows and the .NET Framework documentation sets are separate. Si presiona F1 para mostrar la ayuda sobre un tipo o miembro, se muestra la documentación de referencia del conjunto correspondiente.If you press F1 to display Help on a type or member, reference documentation from the appropriate set is displayed. Sin embargo, si se desplaza por la referencia en tiempo de ejecución de Windows podría encontrar ejemplos que parecen un tanto confuso:However, if you browse through the Windows Runtime reference you might encounter examples that seem puzzling:

  • Temas como la interfaz IIterable no tiene la sintaxis de declaración de Visual Basic o C#.Topics such as the IIterable interface don't have declaration syntax for Visual Basic or C#. En su lugar, aparece una nota por encima de la sección de sintaxis (en este caso, ". NET: esta interfaz aparece como System.Collections.Generic.IEnumerable<T >").Instead, a note appears above the syntax section (in this case, ".NET: This interface appears as System.Collections.Generic.IEnumerable<T>"). Esto se debe a que .NET Framework y Windows en tiempo de ejecuciónWindows Runtime proporcionan una funcionalidad similar con distintas interfaces.This is because the .NET Framework and the Windows en tiempo de ejecuciónWindows Runtime provide similar functionality with different interfaces. Además, hay diferencias de comportamiento: IIterable tiene un método First en lugar de un método GetEnumerator para devolver el enumerador.In addition, there are behavioral differences: IIterable has a First method instead of a GetEnumerator method to return the enumerator. En lugar de obligarle a que aprenda a realizar una tarea común de una manera diferente, .NET Framework admite Windows en tiempo de ejecuciónWindows Runtime haciendo que parezca que su código administrado usa el tipo con el que está familiarizado.Instead of forcing you to learn a different way of performing a common task, the .NET Framework supports the Windows en tiempo de ejecuciónWindows Runtime by making your managed code appear to use the type you're familiar with. No verá la interfaz IIterable en el IDE, por lo que la única forma en que la encontrará en la documentación de referencia de Windows en tiempo de ejecuciónWindows Runtime será cuando examine dicha documentación directamente.You won't see the IIterable interface in the IDE, and therefore the only way you'll encounter it in the Windows en tiempo de ejecuciónWindows Runtime reference documentation is by browsing through that documentation directly.

  • El SyndicationFeed constructor documentación muestra un problema muy relacionado: sus tipos de parámetro parecen ser diferentes para los distintos idiomas.The SyndicationFeed constructor documentation illustrates a closely related issue: Its parameter types appear to be different for different languages. Para C# y Visual Basic, los tipos de parámetros son System.String y System.Uri.For C# and Visual Basic, the parameter types are System.String and System.Uri. Esto también se debe a que .NET Framework tiene sus propios tipos String y Uri, y para esos tipos de uso tan general no tiene sentido obligar a los usuarios de .NET Framework a aprender una forma distinta de hacer las cosas.Again, this is because the .NET Framework has its own String and Uri types, and for such commonly used types it doesn't make sense to force .NET Framework users to learn a different way of doing things. En el IDE, .NET Framework oculta los tipos correspondientes de Windows en tiempo de ejecuciónWindows Runtime.In the IDE, the .NET Framework hides the corresponding Windows en tiempo de ejecuciónWindows Runtime types.

  • En algunos casos, como el Windows.UI.Xaml.GridLength estructura, .NET Framework proporciona un tipo con el mismo nombre pero con más funcionalidad.In a few cases, such as the Windows.UI.Xaml.GridLength structure, the .NET Framework provides a type with the same name but more functionality. Por ejemplo, existe un conjunto de temas sobre constructores y propiedades relacionados con GridLength, pero solo tienen bloques de sintaxis para Visual Basic y C# porque los miembros solo están disponibles en el código administrado.For example, a set of constructor and property topics are associated with GridLength, but they have syntax blocks only for Visual Basic and C# because the members are available only in managed code. En Windows en tiempo de ejecuciónWindows Runtime, las estructuras solo tienen campos.In the Windows en tiempo de ejecuciónWindows Runtime, structures have only fields. El Windows en tiempo de ejecuciónWindows Runtime estructura requiere una clase auxiliar, Windows.UI.Xaml.GridLengthHelper, para proporcionar una funcionalidad equivalente.The Windows en tiempo de ejecuciónWindows Runtime structure requires a helper class, Windows.UI.Xaml.GridLengthHelper, to provide equivalent functionality. No verá esa clase auxiliar en el IDE cuando escriba código administrado.You won't see that helper class in the IDE when you're writing managed code.

  • En el IDE, los tipos de Windows en tiempo de ejecuciónWindows Runtime aparentemente se derivan de System.Object.In the IDE, Windows en tiempo de ejecuciónWindows Runtime types appear to derive from System.Object. Parece que tienen miembros heredados de Object, como Object.ToString.They appear to have members inherited from Object, such as Object.ToString. Estos miembros funcionan como lo harían si los tipos heredaran realmente de Object, y los tipos de Windows en tiempo de ejecuciónWindows Runtime pueden convertirse en Object.These members operate as they would if the types actually inherited from Object, and Windows en tiempo de ejecuciónWindows Runtime types can be cast to Object. Esta funcionalidad forma parte de la compatibilidad que proporciona .NET Framework para Windows en tiempo de ejecuciónWindows Runtime.This functionality is part of the support that the .NET Framework provides for the Windows en tiempo de ejecuciónWindows Runtime. Sin embargo, si se consultan los tipos en la documentación de referencia de Windows en tiempo de ejecuciónWindows Runtime, dichos miembros no aparecen.However, if you view the types in the Windows en tiempo de ejecuciónWindows Runtime reference documentation, no such members appear. La documentación para estos miembros aparentemente heredados se proporciona en la documentación de referencia de System.Object.The documentation for these apparent inherited members is provided by the System.Object reference documentation.

Diferencias que son visibles en el IDEDifferences That Are Visible in the IDE

En escenarios de programación más avanzados, como cuando se usa un componente de Windows en tiempo de ejecuciónWindows Runtime escrito en C# para proporcionar la lógica de la aplicación para una aplicación de la Tienda Windows 8.xWindows 8.x Store compilada para Windows mediante JavaScript, tales diferencias son evidentes tanto en el IDE como en la documentación.In more advanced programming scenarios, such as using a Windows en tiempo de ejecuciónWindows Runtime component written in C# to provide the application logic for a Tienda Windows 8.xWindows 8.x Store app built for Windows using JavaScript, such differences are apparent in the IDE as well as in the documentation. Cuando el componente devuelve una interfaz IDictionary<int, string> a JavaScript, si la examina en el depurador de JavaScript, verá los métodos de la interfaz IMap<int, string> porque JavaScript usa el tipo de Windows en tiempo de ejecuciónWindows Runtime.When your component returns an IDictionary<int, string> to JavaScript, and you look at it in the JavaScript debugger, you'll see the methods of IMap<int, string> because JavaScript uses the Windows en tiempo de ejecuciónWindows Runtime type. Algunos tipos de colecciones de uso general que aparecen de manera diferente en los dos lenguajes se muestran en la tabla siguiente:Some commonly used collection types that appear differently in the two languages are shown in the following table:

Tipo de Windows en tiempo de ejecuciónWindows RuntimeWindows en tiempo de ejecuciónWindows Runtime type Tipo correspondiente de .NET FrameworkCorresponding .NET Framework type
IIterable<T> IEnumerable<T>
IIterator<T> IEnumerator<T>
IVector<T> IList<T>
IVectorView<T> IReadOnlyList<T>
IMap<K, V> IDictionary<TKey, TValue>
IMapView<K, V> IReadOnlyDictionary<TKey, TValue>
IBindableIterable IEnumerable
IBindableVector IList
Windows.UI.Xaml.Data.INotifyPropertyChanged System.ComponentModel.INotifyPropertyChanged
Windows.UI.Xaml.Data.PropertyChangedEventHandler System.ComponentModel.PropertyChangedEventHandler
Windows.UI.Xaml.Data.PropertyChangedEventArgs System.ComponentModel.PropertyChangedEventArgs

En Windows en tiempo de ejecuciónWindows Runtime, IMap<K, V> e IMapView<K, V> se recorren en iteración mediante IKeyValuePair.In the Windows en tiempo de ejecuciónWindows Runtime, IMap<K, V> and IMapView<K, V> are iterated using IKeyValuePair. Cuándo se pasan al código administrado, aparecen como IDictionary<TKey, TValue> e IReadOnlyDictionary<TKey, TValue>, por lo que naturalmente se usa System.Collections.Generic.KeyValuePair<TKey, TValue> para enumerarlas.When you pass them to managed code, they appear as IDictionary<TKey, TValue> and IReadOnlyDictionary<TKey, TValue>, so naturally you use System.Collections.Generic.KeyValuePair<TKey, TValue> to enumerate them.

La forma en que aparecen las interfaces en el código administrado afecta a la forma en que aparecen los tipos que implementan estas interfaces.The way interfaces appear in managed code affects the way types that implement these interfaces appear. Por ejemplo, la clase PropertySet implementa IMap<K, V>, que aparece en código administrado como IDictionary<TKey, TValue>.For example, the PropertySet class implements IMap<K, V>, which appears in managed code as IDictionary<TKey, TValue>. PropertySet aparece como si se implementara IDictionary<TKey, TValue> en lugar de IMap<K, V>, por lo que en código administrado parece tener un método Add, que se comporta como el método Add en diccionarios de .NET Framework.PropertySet appears as if it implemented IDictionary<TKey, TValue> instead of IMap<K, V>, so in managed code it appears to have an Add method, which behaves like the Add method on .NET Framework dictionaries. No parece tener un método Insert.It doesn't appear to have an Insert method.

Para obtener más información sobre el uso de .NET Framework para crear un Windows en tiempo de ejecuciónWindows Runtime componente y consultar un tutorial que muestra cómo utilizar un componente de ese tipo con JavaScript, consulte crear componentes de Windows en tiempo de ejecución en C# y Visual Basic en el Centro de desarrollo de Windows.For more information about using the .NET Framework to create a Windows en tiempo de ejecuciónWindows Runtime component, and a walkthrough that shows how to use such a component with JavaScript, see Creating Windows Runtime Components in C# and Visual Basic in the Windows Dev Center.

Tipos primitivosPrimitive Types

Para habilitar el uso natural de Windows en tiempo de ejecuciónWindows Runtime en el código administrado, en el código aparecen los tipos primitivos de .NET Framework en lugar de los tipos primitivos de Windows en tiempo de ejecuciónWindows Runtime.To enable the natural use of the Windows en tiempo de ejecuciónWindows Runtime in managed code, .NET Framework primitive types appear instead of Windows en tiempo de ejecuciónWindows Runtime primitive types in your code. En .NET Framework, los tipos primitivos como la estructura Int32 tienen muchas propiedades y métodos útiles, como el método Int32.TryParse.In the .NET Framework, primitive types like the Int32 structure have many useful properties and methods, such as the Int32.TryParse method. Por el contrario, los tipos primitivos y las estructuras de Windows en tiempo de ejecuciónWindows Runtime solo tienen campos.By contrast, primitive types and structures in the Windows en tiempo de ejecuciónWindows Runtime have only fields. Cuando se usan primitivas en el código administrado, aparecen como si fueran tipos de .NET Framework, y se pueden usar las propiedades y métodos de los tipos de .NET Framework como se haría normalmente.When you use primitives in managed code, they appear to be .NET Framework types, and you can use the properties and methods of the .NET Framework types as you normally would. La lista siguiente contiene un resumen:The following list provides a summary:

  • Para los tipos primitivos de Windows en tiempo de ejecuciónWindows Runtime Int32, Int64, Single, Double, Boolean, String (una colección inmutable de caracteres Unicode), Enum, UInt32, UInt64 y Guid, utilice el tipo del mismo nombre en el espacio de nombres System.For the Windows en tiempo de ejecuciónWindows Runtime primitives Int32, Int64, Single, Double, Boolean, String (an immutable collection of Unicode characters), Enum, UInt32, UInt64, and Guid, use the type of the same name in the System namespace.

  • Para UInt8, use System.Byte.For UInt8, use System.Byte.

  • Para Char16, use System.Char.For Char16, use System.Char.

  • Para la interfaz IInspectable, use System.Object.For the IInspectable interface, use System.Object.

  • Para HRESULT, use una estructura con un miembro System.Int32.For HRESULT, use a structure with one System.Int32 member.

Como ocurre con los tipos de interfaz, la única ocasión en que puede ver una evidencia de esta representación es cuando el proyecto de .NET Framework es un componente de Windows en tiempo de ejecuciónWindows Runtime utilizado por una aplicación de la Tienda Windows 8.xWindows 8.x Store creada con JavaScript.As with interface types, the only time you might see evidence of this representation is when your .NET Framework project is a Windows en tiempo de ejecuciónWindows Runtime component that is used by a Tienda Windows 8.xWindows 8.x Store app built using JavaScript.

Otros tipos básicos de Windows en tiempo de ejecuciónWindows Runtime que se usan con frecuencia y que aparecen en el código administrado como sus equivalentes de .NET Framework incluyen la estructura Windows.Foundation.DateTime, que aparece en el código administrado como la estructura System.DateTimeOffset, y la estructura Windows.Foundation.TimeSpan, que aparece como la estructura System.TimeSpan.Other basic, commonly used Windows en tiempo de ejecuciónWindows Runtime types that appear in managed code as their .NET Framework equivalents include the Windows.Foundation.DateTime structure, which appears in managed code as the System.DateTimeOffset structure, and the Windows.Foundation.TimeSpan structure, which appears as the System.TimeSpan structure.

Otras diferenciasOther Differences

En algunos casos, deberá realizar alguna acción para que aparezcan en el código los tipos de .NET Framework en lugar de los tipos de Windows en tiempo de ejecuciónWindows Runtime.In a few cases, the fact that .NET Framework types appear in your code instead of Windows en tiempo de ejecuciónWindows Runtime types requires action on your part. Por ejemplo, el Windows.Foundation.Uri clase aparece como System.Uri en el código de .NET Framework.For example, the Windows.Foundation.Uri class appears as System.Uri in .NET Framework code. System.Uripermite un URI relativo, pero Windows.Foundation.Uri requiere un URI absoluto.System.Uri allows a relative URI, but Windows.Foundation.Uri requires an absolute URI. Por consiguiente, cuando pase un URI a un método de Windows en tiempo de ejecuciónWindows Runtime, debe asegurarse de que sea absoluto.Therefore, when you pass a URI to a Windows en tiempo de ejecuciónWindows Runtime method, you must ensure that it's absolute. (Consulte pasar un identificador URI a Windows Runtime.)(See Passing a URI to the Windows Runtime.)

Escenarios para el desarrollo de componentes de Windows RuntimeScenarios for Developing Windows Runtime Components

Los escenarios que se admiten para los componentes administrados de Windows en tiempo de ejecuciónWindows Runtime dependen de los principios generales siguientes:The scenarios that are supported for managed Windows en tiempo de ejecuciónWindows Runtime Components depend on the following general principles:

  • Los componentes de Windows en tiempo de ejecuciónWindows Runtime creados con .NET Framework no tienen ninguna diferencia aparente de otras bibliotecas de Windows en tiempo de ejecuciónWindows Runtime.Windows en tiempo de ejecuciónWindows Runtime Components that are built using the .NET Framework have no apparent differences from other Windows en tiempo de ejecuciónWindows Runtimelibraries. Por ejemplo, si vuelve a implementar un componente nativo de Windows en tiempo de ejecuciónWindows Runtime mediante código administrado, en apariencia no existe ninguna diferencia entre los dos componentes.For example, if you re-implement a native Windows en tiempo de ejecuciónWindows Runtime component by using managed code, the two components are outwardly indistinguishable. El hecho de que un componente esté escrito en código administrado es invisible para el código que lo utiliza, incluso si dicho código también es código administrado.The fact that your component is written in managed code is invisible to the code that uses it, even if that code is itself managed code. Sin embargo, internamente, el componente es código administrado auténtico y se ejecuta en Common Language Runtime (CLR).However, internally, your component is true managed code and runs on the common language runtime (CLR).

  • Los componentes pueden contener tipos que implementan la lógica de la aplicación, controles de la interfaz de usuario de la Tienda Windows 8.xWindows 8.x Store o ambos.Components can contain types that implement application logic, Tienda Windows 8.xWindows 8.x Store UI controls, or both.

    Nota

    Es recomendable separar los elementos de la interfaz de usuario de la lógica de la aplicación.It's good practice to separate UI elements from application logic. Además, no se pueden usar controles de la interfaz de usuario de la Tienda Windows 8.xWindows 8.x Store en una aplicación de la Tienda Windows 8.xWindows 8.x Store creada para Windows mediante JavaScript y HTML.Also, you can't use Tienda Windows 8.xWindows 8.x Store UI controls in a Tienda Windows 8.xWindows 8.x Store app built for Windows using JavaScript and HTML.

  • Un componente puede ser un proyecto de una solución de Visual Studio para una aplicación de la Tienda Windows 8.xWindows 8.x Store o un componente reutilizable que se puede agregar a varias soluciones.A component can be a project within a Visual Studio solution for a Tienda Windows 8.xWindows 8.x Store app, or a reusable component that you can add to multiple solutions.

    Nota

    Si un componente solo se va a usar con C# o Visual Basic, no hay ninguna razón para convertirlo en un componente de Windows en tiempo de ejecuciónWindows Runtime.If your component will be used only with C# or Visual Basic, there's no reason to make it a Windows en tiempo de ejecuciónWindows Runtime component. Si en lugar de ello se crea una biblioteca de clases de .NET Framework ordinaria, no será necesario restringir la superficie de la API pública a los tipos de Windows en tiempo de ejecuciónWindows Runtime.If you make it an ordinary .NET Framework class library instead, you don't have to restrict its public API surface to Windows en tiempo de ejecuciónWindows Runtime types.

  • Puede liberar las versiones de componentes reutilizables mediante el uso de la Windows en tiempo de ejecuciónWindows Runtime VersionAttribute atributo para identificar qué tipos (y los miembros dentro de un tipo) se agregaron en versiones diferentes.You can release versions of reusable components by using the Windows en tiempo de ejecuciónWindows RuntimeVersionAttribute attribute to identify which types (and which members within a type) were added in different versions.

  • Los tipos del componente se pueden derivar de los tipos de Windows en tiempo de ejecuciónWindows Runtime.The types in your component can derive from Windows en tiempo de ejecuciónWindows Runtime types. Los controles pueden derivar de los tipos primitivos de control en el Windows.UI.Xaml.Controls.Primitives espacio de nombres o de más finalizado controles como botón.Controls can derive from the primitive control types in the Windows.UI.Xaml.Controls.Primitives namespace or from more finished controls such as Button.

    Importante

    A partir de Windows 8Windows 8 y de .NET Framework 4.5.NET Framework 4.5, todos los tipos públicos de un componente administrado de Windows en tiempo de ejecuciónWindows Runtime deben ser sealed.Starting with Windows 8Windows 8 and the .NET Framework 4.5.NET Framework 4.5, all public types in a managed Windows en tiempo de ejecuciónWindows Runtime component must be sealed. Un tipo de otro componente de Windows en tiempo de ejecuciónWindows Runtime no puede derivarse de ellos.A type in another Windows en tiempo de ejecuciónWindows Runtime component can't derive from them. Si se desea proporcionar un comportamiento polimórfico a un componente, puede crear una interfaz e implementarla en los tipos polimórficos.If you want to provide polymorphic behavior in your component, you can create an interface and implement it in the polymorphic types.

  • Todos los parámetros y tipos devueltos de los tipos públicos del componente deben ser tipos de Windows en tiempo de ejecuciónWindows Runtime (incluidos los tipos de Windows en tiempo de ejecuciónWindows Runtime definidos por el componente).All parameter and return types on the public types in your component must be Windows en tiempo de ejecuciónWindows Runtime types (including the Windows en tiempo de ejecuciónWindows Runtime types that your component defines).

En las secciones siguientes se proporcionan ejemplos de escenarios comunes.The following sections provide examples of common scenarios.

Lógica de aplicación para una aplicación de la Tienda Windows 8.xWindows 8.x Store con JavaScriptApplication Logic for a Tienda Windows 8.xWindows 8.x Store App with JavaScript

Al desarrollar una aplicación de la Tienda Windows 8.xWindows 8.x Store para Windows mediante JavaScript, puede que algunas partes de la lógica de la aplicación funcionen mejor en código administrado, o que sean más fáciles de desarrollar.When you develop a Tienda Windows 8.xWindows 8.x Store app for Windows using JavaScript, you might find that some parts of the application logic perform better in managed code, or are easier to develop. JavaScript no puede utilizar las bibliotecas de clases de .NET Framework directamente, pero puede convertir la biblioteca de clases en un archivo .WinMD.JavaScript can't use .NET Framework class libraries directly, but you can make the class library a .WinMD file. En este escenario, el componente de Windows en tiempo de ejecuciónWindows Runtime es una parte integral de la aplicación, por lo que no tiene sentido proporcionar atributos de versión.In this scenario, the Windows en tiempo de ejecuciónWindows Runtime component is an integral part of the app, so it doesn't make sense to provide version attributes.

Controles reutilizables de la interfaz de usuario de la Tienda Windows 8.xWindows 8.x StoreReusable Tienda Windows 8.xWindows 8.x Store UI Controls

Se puede empaquetar un conjunto de controles relacionados de la interfaz de usuario en un componente reutilizable de Windows en tiempo de ejecuciónWindows Runtime.You can package a set of related UI controls in a reusable Windows en tiempo de ejecuciónWindows Runtime component. El componente se puede comercializar por separado o usarse como elemento de las aplicaciones que se creen.The component can be marketed on its own or used as an element in the apps you create. En este escenario, tiene sentido usar la Windows en tiempo de ejecuciónWindows Runtime VersionAttribute atributo para mejorar la compatibilidad.In this scenario, it makes sense to use the Windows en tiempo de ejecuciónWindows RuntimeVersionAttribute attribute to improve compatibility.

Lógica de aplicación reutilizable de aplicaciones existentes de .NET FrameworkReusable Application Logic from Existing .NET Framework Apps

Se puede empaquetar código administrado de aplicaciones de escritorio existentes como un componente independiente de Windows en tiempo de ejecuciónWindows Runtime.You can package managed code from your existing desktop apps as a standalone Windows en tiempo de ejecuciónWindows Runtime component. Esto permite usar el componente en las aplicaciones de la Tienda Windows 8.xWindows 8.x Store creadas con C++ o JavaScript, así como en las aplicaciones de la Tienda Windows 8.xWindows 8.x Store creadas con C# o Visual Basic.This enables you to use the component in Tienda Windows 8.xWindows 8.x Store apps built using C++ or JavaScript, as well as in Tienda Windows 8.xWindows 8.x Store apps built using C# or Visual Basic. El control de versiones es una opción si existen varios escenarios de reutilización para el código.Versioning is an option if there are multiple reuse scenarios for the code.

TítuloTitle DescripciónDescription
Información general de aplicaciones de .NET para la tienda Windows.NET for Windows Store apps overview Describe los tipos y miembros de .NET Framework que se pueden usar para crear aplicaciones de la Tienda Windows 8.xWindows 8.x Store y componentes de Windows en tiempo de ejecuciónWindows Runtime.Describes the .NET Framework types and members that you can use to create Tienda Windows 8.xWindows 8.x Store apps and Windows en tiempo de ejecuciónWindows RuntimeComponents. (En el Centro de desarrollo de Windows).(In the Windows Dev Center.)
Guía básica sobre las aplicaciones de la tienda de Windows con C# o Visual BasicRoadmap for Windows Store apps using C# or Visual Basic Proporciona recursos clave para ayudarle a empezar a desarrollar aplicaciones de la Tienda Windows 8.xWindows 8.x Store mediante C# o Visual Basic, e incluye numerosos tutoriales rápidos, directrices y procedimientos recomendados.Provides key resources to help you get started developing Tienda Windows 8.xWindows 8.x Store apps by using C# or Visual Basic, including many Quickstart topics, guidelines, and best practices. (En el Centro de desarrollo de Windows).(In the Windows Dev Center.)
Desarrollar aplicaciones de la tienda de Windows (VB / C# / C++ y XAML)Developing Windows Store apps (VB/C#/C++ and XAML) Proporciona recursos clave para ayudarle a empezar a desarrollar aplicaciones de la Tienda Windows 8.xWindows 8.x Store mediante C# o Visual Basic, e incluye numerosos tutoriales rápidos, directrices y procedimientos recomendados.Provides key resources to help you get started developing Tienda Windows 8.xWindows 8.x Store apps by using C# or Visual Basic, including many Quickstart topics, guidelines, and best practices. (En el Centro de desarrollo de Windows).(In the Windows Dev Center.)
Crear componentes de tiempo de ejecución de Windows en C# y Visual BasicCreating Windows Runtime Components in C# and Visual Basic Describe cómo crear un componente de Windows en tiempo de ejecuciónWindows Runtime mediante .NET Framework, explica cómo usarlo como parte de una aplicación de la Tienda Windows 8.xWindows 8.x Store creada para Windows mediante JavaScript y describe cómo depurar la combinación con Visual Studio.Describes how to create a Windows en tiempo de ejecuciónWindows Runtime component using the .NET Framework, explains how to use it as part of a Tienda Windows 8.xWindows 8.x Store app built for Windows using JavaScript, and describes how to debug the combination with Visual Studio. (En el Centro de desarrollo de Windows).(In the Windows Dev Center.)
Referencia de Windows en tiempo de ejecuciónWindows Runtime reference Documentación de referencia para Windows en tiempo de ejecuciónWindows Runtime.The reference documentation for the Windows en tiempo de ejecuciónWindows Runtime. (En el Centro de desarrollo de Windows).(In the Windows Dev Center.)
Transferencia de un URI a Windows RuntimePassing a URI to the Windows Runtime Describe un problema que puede surgir cuando se pasa un URI desde el código administrado a Windows en tiempo de ejecuciónWindows Runtime y cómo evitarlo.Describes an issue that can arise when you pass a URI from managed code to the Windows en tiempo de ejecuciónWindows Runtime, and how to avoid it.