【问题标题】:How to solve the error "Must use PackageReference"?如何解决“必须使用 PackageReference”错误?
【发布时间】: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 -&gt; Options -&gt; Nuget Package Manager -&gt; General -&gt; 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


【解决方案1】:

VS2017/VS2019 -> Solution Explorer -> 右击 References -> “将packages.config迁移到PackageReference”

VS2019 -> Solution Explorer -> 右击 packages.config -> “将packages.config迁移到PackageReference”

【讨论】:

  • 我已经使用 NuGet 安装了新包 Microsoft.Web.WebView2,并且我还安装了 Microsoft Edge Chromium。之后,我重建了应用程序,并且收到了“必须使用 PackageReference”错误!我已经完成了 Patrick 的建议,现在可以像以前一样构建了。谢谢
  • 我在 VS2019 的引用上下文菜单中缺少迁移选项,但它也可以在 packages.config 上下文菜单中找到。
【解决方案2】:

对我有用的解决方案是:

  1. 对相关项目运行清理
  2. 关闭 Visual Studio
  3. 导航到磁盘上的项目文件夹并删除 obj 文件夹
  4. 重新打开 Visual Studio 并构建

【讨论】:

    【解决方案3】:

    可能是因为 nugetpackage,对于 WPF 使用 WPF 之一。

    【讨论】:

      【解决方案4】:

      转到您的 .csproj 并删除对包的引用。 就我而言,它们位于 XML 文件的末尾

      【讨论】:

        猜你喜欢
        • 2018-12-01
        • 2011-11-05
        • 2011-12-11
        • 2021-04-11
        • 1970-01-01
        • 2019-11-17
        • 2021-05-20
        • 2021-08-26
        • 2018-01-16
        相关资源
        最近更新 更多