【发布时间】:2020-02-20 17:24:49
【问题描述】:
将WindowsRuntime 添加到 WinForms 项目后,构建项目失败并出现错误“必须使用 PackageReference”。构建日志更精确:
C:[...]\Visual Studio 2017\Projects\Projectname\packages\Microsoft.Windows.SDK.Contracts.10.0.18362.2005\build\Microsoft.Windows.SDK.Contracts.targets(4,5):错误:必须使用 PackageReference
这就是我所做的:
安装包 Microsoft.Windows.SDK.Contracts
参考:
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\System.Runtime.WindowsRuntime.dll,
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Threading.Tasks.dll
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.IO.dll
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.InteropServices.WindowsRuntime.dll。
这可能与 .NET 版本有关吗?在项目的 packages.config 中有 4.6,而项目的目标是 4.5。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Windows.SDK.Contracts" version="10.0.18362.2005" targetFramework="net45"/>
<package id="System.Runtime.WindowsRuntime" version="4.6.0" targetFramework="net45" />
<package id="System.Runtime.WindowsRuntime.UI.Xaml" version="4.6.0" targetFramework="net45" />
</packages>
没有编译错误...只有这个奇怪的“PackageReference”错误。
【问题讨论】:
-
您的意思是您正在尝试在 System.Windows.Forms 项目中使用网络 .core 引用?
-
您是否在
Tools -> Options -> Nuget Package Manager -> General -> Package Management中设置使用PackageReference作为包管理格式? 4.6 版本与System.Runtime.WindowsRuntime依赖相关,与.Net Framework 无关。 -
@Jimi,默认包管理格式设置为 Packages.config 以及设置为 PackageReference 时会发生错误。更改此值后,我清除了 NuGet 缓存和解决方案。当我安装 Microsoft.Windows.SDK.Contracts 时,值为 Packages.config... 在运行 Install-Package 之前是否必须更改该值?
-
卸载所有与
Microsoft.Windows.SDK.Contracts相关的NuGet包,设置PackageReference为默认格式,使用NuGet包管理器重新安装所有包。 -
@Jimi 非常感谢!你的建议奏效了。
标签: c# winforms visual-studio-2017 windows-runtime