【问题标题】:Why does NuGet pack break with VS2019 build tools?为什么 NuGet 包会与 VS2019 构建工具中断?
【发布时间】:2019-09-03 20:27:00
【问题描述】:

我们有许多 .NET Framework 项目在构建后步骤中使用“nuget pack MyProject.csproj”命令。到目前为止,我们一直在使用 VS2010 (:O 我知道),它一直在愉快地吐出 nupkg 文件。

我们最近将构建工具更新为 2019 版本(在调用 msbuild 之前运行新版本的 varsall.bat),“nuget pack”命令现在失败:

Error NU5012: Unable to find 'MyProject.dll'. Make sure the project has been built.

我的尝试:

  • 在打包前添加“nuget spec”步骤
  • 将 nuget CLI 可执行文件升级到最新版本
  • 从 packages.config 更新到 PackageReferences
    • 这允许您使用 MSBuild -t:pack。但是,有两个问题:
    • 在我的机器上的构建后步骤中运行此程序时,它会启动数十个 cmd 和 MSBuild 进程并与我的 CPU 挂钩。
    • 我们的开发人员目前停留在 VS2017 上,但是 2017 构建工具不再可用于我们的构建服务器(因此我们使用 2019)。 2017 年和 2019 年的安装将 MSBuild 放置在不同的位置。我们可以为所有机器设置路径变量,但这似乎很脆弱。
  • 我正在尝试将其中一个项目升级到新的 csproj 格式,但它相当复杂。升级我们所有的项目本身就是一项工作,我仍在探索其后果。

我是否缺少一些简单的东西可以在不进行大量修改的情况下使其工作?

【问题讨论】:

    标签: msbuild nuget visual-studio-2019 visual-studio-2017-build-tools


    【解决方案1】:

    错误 NU5012:无法找到“MyProject.dll”。确保项目 已建成。

    此消息表明 nuget.exe 找不到输出程序集。所以你必须确保程序集创建成功。

    还有一点需要注意,通常我们使用nuget pack foo.csproj -Properties Configuration=Release 之类的命令来打包发布模式下构建的程序集。如果你在 post-build-event 中使用nuget pack xx.csproj 之类的命令,无论你使用msbuild 构建项目的哪个配置,nuget 都会尝试在ProjectDir/bin/debug 中查找程序集。

    因此,当您将项目部署到没有 bin 和 obj 文件夹的远程服务器时,如果您尝试使用像 msbuild xx.csproj /p:Configuration=Release 这样的命令,则构建处于发布模式,而 nuget.exe 将搜索 bin\debug 而不是预期的 @987654328 @。你应该检查一下你是否处于同样的情况。

    为什么 NuGet 包会与 VS2019 构建工具发生冲突?

    此问题与构建工具包无关。由于您收到的错误消息来自nuget。 msbuild只是帮助调用nuget.exe,问题的原因是nuget.exe can't find the needed assembly by one specific path。请检查错误信息中的路径是否正确,然后检查程序集是否在该路径中。

    【讨论】:

      【解决方案2】:

      在将 TFS 升级到 Azure Devops 期间,我也遇到了同样的问题。新的 Nuget 任务没有 -Build 的开关。 Pack 的 Nuget 任务屏幕中的字段也不允许您添加此开关,这就是它抱怨找不到 dll 或构建输出的原因。我修改了代理任务文件夹中的 nugetpack.js 文件以测试理论,现在打包选项构建成功。

      这是我添加到 js 文件中的行(朝向页面底部): nugetTool.arg("-Build");

      如果有在没有 -Build 开关的情况下调用 Nuget 包的用例,最好将此选项表示为复选框

      【讨论】:

        猜你喜欢
        • 2018-06-05
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 2011-11-07
        • 1970-01-01
        • 2020-12-07
        相关资源
        最近更新 更多