【问题标题】:MSBuild 15 NuGet restore and buildMSBuild 15 NuGet 还原和构建
【发布时间】:2018-03-28 04:11:08
【问题描述】:

我正在尝试让新的 MSBuild NuGet 恢复功能正常工作,但遇到了一个奇怪的问题。

如果我这样做:

msbuild.exe mySolution.sln /p:Configuration=Release

我收到有关缺少软件包的错误消息。这是预期的行为。 但是,如果我这样做:

msbuild.exe mySolution.sln /p:Configuration=Release /t:restore

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

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

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

有没有一种方法可以使用单个命令来恢复和构建?

【问题讨论】:

    标签: .net visual-studio msbuild nuget


    【解决方案1】:

    MSBuild 15.5 将引入实现此功能的a /restore flag

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

    【讨论】:

    • 我们对我们的解决方案进行了特定的 nuget 恢复,然后就可以使用它了。
    • 当我看到默认的“nuget restore”使用 msbuild 14.0 并且失败时,我试图找到特定版本的“nuget restore”解决方案。但是随着您对“/t”开关的提议,一切都会自动构建。谢谢马丁!
    • 如果您的 nuget.exe 本身是旧版本,则它不会“看到”安装了 MS Build 15 并将回退到默认版本 14。
    • msbuild.exe /t:Restore 完全没有任何作用。它说没有要恢复的包。如果您在visual studio中打开相同的解决方案,右键单击解决方案,然后选择恢复包,它会全部恢复。为什么这些工具的文档记录如此糟糕?
    • 这仅适用于使用 PackageReference 的项目,不适用于经典 packages.config 项目
    猜你喜欢
    • 1970-01-01
    • 2017-04-19
    • 2020-01-08
    • 2012-10-27
    • 2018-07-31
    • 2014-01-12
    • 2018-07-08
    • 2017-08-16
    • 2014-04-13
    相关资源
    最近更新 更多