C# “如何解决错误”;必须使用PackageReference;?

C# “如何解决错误”;必须使用PackageReference;?,c#,winforms,visual-studio-2017,windows-runtime,C#,Winforms,Visual Studio 2017,Windows Runtime,将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

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.0

提及:

  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll
  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETFramework\v4.5\Facades\System.Threading.Tasks.dll
  • C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETFramework\v4.5\Facades\System.IO.dll
  • C:\Program Files(x86)\Reference Assembly\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”错误。

VS2017/VS2019
->
解决方案资源管理器
->右键单击
引用
->“将packages.config迁移到PackageReference”


右键单击
packages.config
->“Migrate packages.config to PackageReference”

可以使用nugetpackage,对于WPF使用WPF one。
对我有效的解决方案是:

  • 对有问题的项目进行清理
  • 关闭Visual Studio
  • 导航到磁盘上的项目文件夹并删除obj文件夹
  • 重新打开Visual Studio并生成

  • 转到.csproj并删除对包的引用。
    在我的例子中,它们位于XML文件的末尾

    您的意思是您试图在System.Windows.Forms项目中使用net.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。。。在运行安装包之前,我是否必须更改该值?卸载与Microsoft.Windows.SDK.Contracts相关的所有NuGet软件包,将
    PackageReference设置为默认格式,使用NuGet软件包管理器重新安装所有软件包。@Jimi非常感谢您!您的建议有效。我已使用NuGet安装了新软件包Microsoft.Web.WebView2,并且还安装了Microsoft Edge Chromium。之后,我重新生成了应用程序,收到“必须使用PackageReference”错误!我已经完成了Patrick proposal和build now工作,与以前一样。ThanksI在VS2019的引用上下文菜单中缺少迁移选项,但也可以在packages.config上下文菜单中找到。