如何将UWP类库引用到WPF应用并解决相关编译报错问题
如何将UWP Class Library链接到WPF应用程序?
我创建了一个包含单个测试类的UWP类库,现有一个WPF .NET应用程序需要调用该类库,请问需要遵循哪些操作步骤?
我参考相关教程尝试将类库MyLib添加到我的应用MyApp中,遇到了如下编译错误:
严重性 代码 描述 项目 文件 行号 取消显示状态
错误 NU1201 项目MyLib与netcoreapp3.1 (.NETCoreApp,Version=v3.1)不兼容。项目MyLib支持的版本为:uap10.0.19041 (UAP,Version=v10.0.19041) MyApp C:\Users....\MyApp.csproj
更新
我按照建议添加了如下代码后,出现了构建错误,且从始至终存在两个编译警告,现将相关信息分享出来供问题排查参考:
<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>
- 警告 NETSDK1137 无需再使用Microsoft.NET.Sdk.WindowsDesktop SDK,建议将根Project元素的Sdk属性修改为'Microsoft.NET.Sdk'。 MyApp C:\Program Files\dotnet\sdk\5.0.103\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 376
- 警告 MSB3270 当前生成的项目处理器架构“MSIL”与引用的程序集“C:\Users...\MyLib\bin\x64\Debug\MyLib.dll”的处理器架构“AMD64”不匹配,该问题可能导致运行时故障。请考虑通过配置管理器修改项目的目标处理器架构,使项目与引用的处理器架构保持一致,或者依赖与项目目标处理器架构匹配的引用。 MyApp C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 2123
解决方案
你遇到的报错和警告均为配置不匹配导致,按以下步骤调整即可:
- 修正WPF项目的SDK配置,解决NETSDK1137警告。将项目文件第一行的Sdk属性从
Microsoft.NET.Sdk.WindowsDesktop修改为Microsoft.NET.Sdk,.NET 5及以上版本已经将WPF、WinForms相关的SDK整合到核心SDK中,不需要再单独引用WindowsDesktop SDK。 - 统一两个项目的目标处理器架构,解决MSB3270警告。右键点击解决方案,选择「配置管理器」,将WPF项目的目标平台调整为x64,或者将UWP类库的目标平台调整为「任意CPU」,保证两个项目的处理器架构完全一致即可。
- 优化目标框架兼容配置。可以将WPF项目的
TargetFramework修改为net5.0-windows10.0.19041.0(版本号和UWP类库的uap版本保持一致即可),这样不需要额外配置AssetTargetFallback也能原生兼容UWP类库的引用。如果要保留现有TargetFramework写法,确认AssetTargetFallback的版本号和UWP类库的目标版本完全匹配即可。 - 清理重建项目。所有配置修改完成后,右键点击解决方案选择「清理」,清理完成后重新生成解决方案即可消除所有报错和警告。
内容的提问来源于stack exchange,提问作者Sazzad Hissain Khan
相关产品推荐
相关产品推荐

