¿Cómo vincular la biblioteca de clases de UWP a una aplicación WPF?
Creé una biblioteca de clases de UWP con una sola clase de prueba. Tengo una aplicación WPF .NET que quiere consumir esa biblioteca de clases. ¿Cuáles son los pasos que debo seguir?
Siguiendo este tutorial , quería agregar la biblioteca MyLib
en mi aplicación MyApp
. Pero estoy encontrando los siguientes errores del compilador,
Código de gravedad Descripción Error de estado de supresión de línea de archivo de proyecto NU1201 Project MyLib no es compatible con netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project MyLib admite: uap10.0.19041 (UAP, Versión = v10.0.19041) MyApp C:\Users....\MyApp.csproj
##ACTUALIZAR
Después de agregar el siguiente código,
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net5.0-windows</TargetFramework> <AssetTargetFallback>uap10.0.19041</AssetTargetFallback> <UseWPF>true</UseWPF> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\MyLib\MyLib.csproj" /> </ItemGroup> </Project>
como sugirió TamBui en la respuesta, recibo un error de compilación. Sin embargo, ha habido dos advertencias del compilador desde el principio. Compartiendo si puede dar alguna pista,
Advertencia NETSDK1137 Ya no es necesario usar Microsoft.NET.Sdk.WindowsDesktop SDK. Considere cambiar el atributo Sdk del elemento Proyecto raíz a 'Microsoft.NET.Sdk'. Mi aplicación C:\Archivos de programa\dotnet\sdk\5.0.103\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 376
Advertencia MSB3270 Hubo una discrepancia entre la arquitectura del procesador del proyecto que se está construyendo "MSIL" y la arquitectura del procesador de la referencia "C:\Users...\MyLib\bin\x64\Debug\MyLib.dll", "AMD64" . Esta discrepancia puede causar fallas en el tiempo de ejecución. Considere cambiar la arquitectura de procesador de destino de su proyecto a través del Administrador de configuración para alinear las arquitecturas de procesador entre su proyecto y las referencias, o tome una dependencia de las referencias con una arquitectura de procesador que coincida con la arquitectura de procesador de destino de su proyecto. Mi aplicación C:\Archivos de programa (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 2123
Debe agregar el AssetTargetFallback
que coincida con la versión de destino de su proyecto de UWP al PropertyGroup
de su proyecto de WPF. Seleccione su proyecto WPF en el Explorador de soluciones y podrá editar las propiedades del proyecto.
<PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <RootNamespace>_68824006</RootNamespace> <AssetTargetFallback>uap10.0.19041</AssetTargetFallback> <UseWPF>true</UseWPF> </PropertyGroup>
Una aplicación WPF no puede hacer referencia a una biblioteca de clases de UWP. En resumen, las dos plataformas o marcos diferentes no son compatibles entre sí.
Debe cambiar el marco de destino de su biblioteca de clases ( MyLib.csproj
) a .NET Standard o al mismo marco al que apunta su aplicación WPF:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup> </Project>