.net - NuGet自动包恢复不适用于MSBuild
我正在尝试使用MSBuild 12.0构建一个缺少EnableNuGetPackageRestore=true内容的解决方案(除了repositories.config)。 我希望它能在构建之前自动恢复所有丢失的软件包但事实并非如此--MsBuild会报告大量错误:
“你错过了使用指令或汇编引用吗?”
NuGet Manager是2.7(我在Visual Studio 2013中看到这个关于框)。 我甚至试图传递EnableNuGetPackageRestore=true参数 - 没有运气。 我错过了什么?
11个解决方案
226 votes
如果您使用的是MSBuild 15附带的Visual Studio 2017,并且您的.csproj文件采用新的nuget.exe格式,则最简单的方法是使用新的MSBuild nuget.exe目标。
没有人真正回答了原来的问题,即“在使用MSBuild从命令行构建时如何让NuGet包自动恢复?” 答案是:除非您使用“启用NuGet包还原”选项(现在已按照此引用弃用),否则您不能(但请参见下文)。 如果你想做的话,例如 在CI服务器上自动构建,这很糟糕。
然而,有一种稍微迂回的方式来获得所需的行为:
从[https://dist.nuget.org/win-x86-commandline/latest/nuget.exe]下载最新的NuGet可执行文件,并将其放在PATH中的某个位置。 (您可以将此作为预构建步骤。)
运行nuget.exe,它将自动下载所有缺少的软件包。
运行nuget.exe以构建您的解决方案。
除此之外:虽然新的和推荐的自动包恢复方