.net - NuGet 自动包还原不适用于 MSBuild

我正在尝试使用 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 服务器上自动构建,这很糟糕。

但是,有一种稍微迂回的方式来获得所需的行为:

  1. 从 https://dist.nuget.org/win-x86-commandline/latest/nuget.exe 下载最新的 NuGet 可执行文件并将其放置在 PATH 中的某个位置。 (您可以将此作为预构建步骤。)
  2. 运行 nuget restore这将自动下载所有丢失的包。
  3. 运行 msbuild 来构建您的解决方案。

除此之外:虽然新的和推荐的自动包恢复方法在版本控制中减少了困惑,但它也使命令行包恢复变得不可能,除非你跳过下载和运行 nuget.exe 的额外环节。进展吗?

https://stackoverflow.com/questions/22300375/

相关文章:

git - sbt 如何从 git 中提取依赖项?

maven - Javascript Web 应用程序和 Java 服务器,全部在 Maven 中构

c# - 调试未启动

xcode - iOS5 Storyboard错误 : Storyboards are unavai

visual-studio - Visual Studio 2015 项目构建失败但没有错误

xcode4 - Xcode 4 在哪里存储方案数据?

angular - 组件是2个模块声明的一部分

.net - 如何识别 DLL 是 Debug 还是 Release 构建(在 .NET 中)

build - 使用 msbuild 指定解决方案的项目文件

eclipse - 在解决构建路径错误之前,无法构建项目。