25

是否可以切换回packages.config事物方案?我在创建项目时转向了PackageReference计划,但由于某些原因现在需要转向旧的方式。

我已经尝试过包管理器控制台命令,例如使用UpdateReinstall选项恢复。他们不再生成 packages.config 了。我也切换Tools > Options > NuGet Package Managerpackages.config. 不好。

4

4 回答 4

38

您需要:

  1. 向项目中添加一个“空”文件(即示例packages.config中的 xml,但没有单个元素)<package>
  2. 卸载项目或关闭 vs 并csproj在文本编辑器中打开文件。
  3. PackageReference从项目文件中删除所有元素。
  4. 确保<RestoreProjectStyle>未在项目文件中设置。
  5. 在 VS 中重新打开项目。
于 2017-08-30T15:32:59.190 回答
13

我少了一步:

4.5. 确保Tools>Options>NuGet Package Manager>General>Default package management format设置为Packages.config

于 2019-01-21T09:58:42.737 回答
5

想再补充一件事。我尝试了上述所有步骤,Visual Studio 一直在尝试使用全局包位置,而不是 Nuget.config 中的 repositoryPath。最后发现我的项目的 obj 目录中有一个package-lock.json文件,其中存储了全局包目录。出于某种原因,Visual Studio 中的 Clean 操作没有删除文件,所以我最后做了一个

git clean -x -d -f

在我的存储库的根目录。这会删除所有未跟踪的文件和目录,并忽略 .gitignore 文件的模式。这有点过分,我本可以尝试手动找到它们,但它完成了工作。现在 Nuget 恢复正确地使用了 Nuget.Config 文件中指定的 repositoryPath 设置。

于 2019-04-19T03:28:52.073 回答
1

我是如何让它工作的:

  1. 截取我们在这个项目中使用的包的截图
  2. 在项目中添加一个“空”packages.config文件并将其复制到其中:
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
  1. 卸载项目并在文本编辑器中打开 csproj 文件。

  2. 从项目文件中删除所有 PackageReference 元素。

  3. 确保<RestoreProjectStyle>未在项目文件中设置。

  4. 确保:

    工具>选项> NuGet包管理器>常规>默认包管理格式设置为Packages.config

  5. 删除obj项目中的文件夹

  6. 使用屏幕截图再次重新下载包

于 2020-11-11T13:26:18.193 回答