在.NET Standard项目中使用程序包引用后,如何恢复在packages.config中引用Nuget程序包?

Cas*_*ass 9 .net nuget .net-standard .net-standard-1.4

背景

我有几个C#代码库,最近将它们转换为目标.NET Standard 1.4,可在Xamarin Forms项目以及许多旧版.NET Framework 4.6.1项目中使用。

我最初使用Project Files样式的Package Reference将Nuget软件包添加到.NET Standard类库。

了解了此错误后,在旧版.NET Framework项目中无法解析来自.NET Standard项目的可传递程序包引用,我尝试了添加<RestoreProjectStyle>PackageReference</RestoreProjectStyle>到旧版项目的csproj中的解决方法。遗留项目继续无法解决可传递引用-即,解决方法无效。

因此,我想恢复到旧样式,即在.NET Standard项目的packages.config文件中引用Nuget软件包。

我遵循的步骤:

  • 卸载.NET Standard项目中的所有Nuget软件包,但无法卸载的NETStandard.Library除外
    • 我对Nuget的VS默认设置是将解决方案中的第一个软件包添加到packages.config
  • Manage Nuget Packages工具窗口 重新安装Nuget软件包
    • 该软件包作为放置在csproj中PackageReference,而不是packages.config文件中。

有谁知道我可以如何强制将.NET Standard 1.4项目中的新Nuget程序包列出packages.config而不是作为程序包引用列出?

Ben*_*enV 10

除了从项目文件中删除PackageReferences之外,我还必须从$ProjectDir\obj目录中删除以下文件:

  • Myproject.csproj.nuget.cache
  • Myproject.csproj.nuget.g.props
  • Myproject.csproj.nuget.g.targets
  • project.assets.json

  • 这是唯一对我有用的东西。我不得不签出另一个尚未转换的分支,而且我什么也无法工作。我什至甚至跑了`devenv / resetuserdata`,但那没用(希望我先见过这个!) (2认同)
  • 谢谢你!恢复到以前的提交对我没有帮助,但这确实有帮助! (2认同)
  • 定期删除整个 obj 目录可以解决或避免 VS 为您创建的奇怪错误。它是一个临时编译文件夹,因此始终期望重新生成其内容。 (2认同)

小智 8

如何回滚到packages.config

  1. 关闭迁移的项目。

  2. 将项目文件和packages.config 从备份(通常为\MigrationBackup\\)复制到项目文件夹。如果项目根目录中存在 obj 文件夹,请将其删除。

  3. 打开项目。

  4. 使用“工具”>“NuGet 包管理器”>“包管理器控制台”菜单命令打开包管理器控制台。

  5. 在控制台中运行以下命令:

    更新包-重新安装

来源: https: //learn.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference#how-to-roll-back-to-packagesconfig


Wes*_*ard -1

如果您还没有删除此属性,则需要:<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

然后删除项目中的任何 PackageReferences。然后,当您添加 nuget 包引用时,它们应该进入 package.config 文件。

  • 已确认,这**不起作用** (2认同)