如何让 MSBuild 恢复任何需要的 NuGet 包

Dav*_*len 2 msbuild visual-studio nuget nuget-package-restore

我已经查看了大量关于此的文章,包括此处此处。没有人提供我可以开始工作的解决方案。

我在 VisualStudio 中打开了自动执行此操作的所有功能。但是在我们的构建机器上,我们使用 MSBuild 构建 .sln 文件,而不是通过打开 VisualStudio。那么在 MSBuild 中我怎样才能最好地做到这一点?

我们所有的 .sln 文件都适用于 VisualStudio 2019,并设置为处理 NuGet 的默认值(我相信)。

Mr *_*ian 7

msbuild -t:Restore将为具有PackageReference nuget 管理格式的项目恢复 nuget 包。

您的情况看起来像您使用过的packages.config nuget 管理格式

如果是这样,您应该只使用nuget restoremsbuild.exe 来还原 nuget 包。

1)首先nuget.exe cli从网站下载并配置它。你可以检查一下

2)然后使用MSBuild命令行,输入

nuget xxx\xxx.sln restore
msbuild xxx\xxx.sln -t:build
Run Code Online (Sandbox Code Playgroud)

另一种方法是将 msbuild -t:restore 与-p:RestorePackagesConfig=true.

msbuild xxx\xxx.sln -t:restore,build -p:RestorePackagesConfig=true
Run Code Online (Sandbox Code Playgroud)

  • 它实际上是`nuget Restore xxx\xxx.sln` (5认同)
  • 注意,这篇 MS 文章明确解释了不要像这里那样使用 `-t:restore,build`,而是使用 `-t:build -restore` - 给出的原因是:`由于 NuGet 可以恢复导致崩溃的包MSBuild 目标和属性、恢复和构建评估使用不同的全局属性运行。这意味着以下行为将具有不可预测且通常不正确的行为。` https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#restoring-and-building-with-one-msbuild-command (3认同)