.net - pantalla - Uso de componentes de tiempo de ejecución personalizados de Windows en aplicaciones que no son de Metro
wunderlist web (1)
ACTUALIZACIÓN: Esto solo funciona con Windows 8. Microsoft deshabilitó esto en Windows 8.1.
Sí hay. El bloque al intentar agregarlos a través del administrador de referencia parece implementarse dentro de Visual Studio. Una vez agregado, Visual Studio tratará el archivo referenciado como lo haría con cualquier otro archivo WinMD.
NOTA: ¡ ESTA SOLUCIÓN NO ES RESPALDADA POR MICROSOFT!
Para agregar su archivo WinMD personalizado a cualquier aplicación que no sea de Metro, primero debe asegurarse de que está apuntando a .NET 4.5. Esto no funcionará con ninguna versión anterior de .NET Framework.
Una vez que esté apuntando a .NET 4.5, descargue el archivo del proyecto y ábralo para editarlo. A continuación, agregue el siguiente código después del último <PropertyGroup>
en el archivo de proyecto:
<PropertyGroup>
<TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>
A continuación, busque <ItemGroup>
que contenga sus referencias y agregue lo siguiente:
<Reference Include="{Namespace}">
<HintPath>{Path to WinMD file}</HintPath>
</Reference>
Si bien no puedo garantizar que no surjan problemas al hacer esto, y dado que Microsoft ha sido MUY claro sobre el hecho de que independientemente de qué perfil de marco esté utilizando, el CLR está cargando los mismos ensamblajes, sospecho fuertemente que esto no causará ningún daño.
Una nota sobre las bibliotecas de clase. Si incluye su WinMD en una biblioteca de clases que no es de Metro y luego hace referencia a esa biblioteca en una aplicación que no sea de Metro; no podrá acceder a ninguno de los tipos personalizados de WinRT que expone su biblioteca de clases sin hacer referencia al archivo WinMD en su aplicación o al proporcionar tipos de envoltorio.
Imagine un escenario en el que tenga un marco complejo de código WinRT al que le gustaría acceder desde las aplicaciones C ++ Metro y C # Desktop.
¿Hay alguna forma de incluir WinMD en una aplicación que no sea de Metro?