MSBuild 15 NuGet恢复和构建

Tom*_*Tom 15 .net msbuild visual-studio nuget

我正在尝试使新的MSBuild NuGet恢复功能正常工作并遇到一个奇怪的问题.

如果我做:

msbuild.exe mySolution.sln /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

我收到有关丢失包裹的错误.这是预期的行为.但是,如果我这样做:

msbuild.exe mySolution.sln /p:Configuration=Release /t:restore
Run Code Online (Sandbox Code Playgroud)

MSBuild"成功"但只是创建一个obj文件夹,其中包含一些与NuGet还原相关的文件,即没有bin\Release \文件夹.

为了恢复构建,我必须发出上述两个命令(显然首先恢复).

我已升级所有packages.config文件以使用.csproj文件中的最新PackageReference.

有没有办法使用单个命令进行恢复和构建?

Mar*_*ich 27

MSBuild 15.5将引入一个/restore实现此功能标志.

在此之前,理论上可以在同一个调用(/t:Restore;Build)中运行还原和构建,但它不安全,因为MSBuild可能会缓存项目文件而不会看到NuGet还原所做的更改.该/restore选项将在恢复正常构建之前清除所有受影响的缓存.

  • msbuild.exe /t:Restore 绝对不执行任何操作。它说没有要恢复的包。如果您在 Visual Studio 中打开相同的解决方案,右键单击解决方案,然后选择还原包,它将全部还原。为什么这些工具的文档记录如此之少? (6认同)
  • 这仅适用于使用 PackageReference 的项目,不适用于经典的 packages.config 项目 (4认同)