切换回 packages.config

Switch back to packages.config

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

我已经尝试使用 UpdateReinstall 选项进行还原等程序包管理器控制台命令。他们不再生成 packages.config。我还将 Tools > Options > NuGet Package Manager 切换为 packages.config。不好。

您需要:

  1. 向项目添加一个 "empty" packages.config 文件(即 xml 与 the example 相同,但没有单独的 <package> 元素)
  2. 卸载项目或关闭 vs 并在文本编辑器中打开 csproj 文件。
  3. 从项目文件中删除所有 PackageReference 个元素。
  4. 确保项目文件中没有设置<RestoreProjectStyle>
  5. 在 VS 中重新打开项目。

我少了一步:

4.5. Make sure that Tools>Options>NuGet Package Manager>General>Default package management format is set to Packages.config

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

git clean -x -d -f

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

我是如何做到的:

  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. 使用截图重新下载包