我正在尝试使用 MSBuild 12.0 构建一个缺少 packages
内容(除了 repositories.config
内部)的解决方案。我希望它在构建之前自动恢复所有丢失的包,但事实并非如此——MsBuild 报告了大量错误:
"are you missing a using directive or an assembly reference?"
NuGet Manager 是 2.7(我在 Visual Studio 2013 中看到了这个关于框)。我什至尝试传递 EnableNuGetPackageRestore=true
参数 - 不走运。我错过了什么?
最佳答案
如果您使用 MSBuild 15 或更高版本附带的 Visual Studio 2017 或更高版本,并且您的 .csproj 文件位于 new PackageReference
format 中,最简单的方法是use the new MSBuild Restore
target .
没有人真正回答过最初的问题,即“在使用 MSBuild 从命令行构建时,如何让 NuGet 包自动恢复?”答案是:除非您使用“启用 NuGet 包还原”选项(现在根据 this reference 已弃用),否则您不能(但请参见下文)。如果你正在尝试做例如在 CI 服务器上自动构建,这很糟糕。
但是,有一种稍微迂回的方式来获得所需的行为:
nuget restore
这将自动下载所有丢失的包。msbuild
来构建您的解决方案。除此之外:虽然新的和推荐的自动包恢复方法在版本控制中减少了困惑,但它也使命令行包恢复变得不可能,除非你跳过下载和运行 nuget.exe 的额外环节
。进展吗?
https://stackoverflow.com/questions/22300375/