【问题标题】:NuGet targets wrong folder when publishing web application via MSBuild.exe in CI通过 CI 中的 MSBuild.exe 发布 Web 应用程序时,NuGet 的目标文件夹错误
【发布时间】:2015-09-01 15:31:53
【问题描述】:

我正在尝试在我们的 CI 服务器 (bamboo) 中设置一个项目。

我有一个 API 解决方案,其中包含多个项目(数据访问、服务接口、WebApi、测试、其他一些......你明白了)。我在脚本中运行 nuget.exe 以在解决方案级别提取必要的包。包进入解决方案目录.nuget

当我使用 MSBuild 创建二进制文件时,一切都很好。然后我在测试项目中使用 MSTest 运行器;仍然一切都很好。然后我关闭目标 Web 服务,然后使用参数 /p:DeployOnBuild=true /p:PublishProfile=INTENV 对 WebApi 项目运行 msbuild.exe

这就是竹子向我吠叫的地方。我收到这样的失败错误消息:

error : This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\(My Solution Folder)\\.nuget\NuGet.targets.

项目显然是在项目文件夹中寻找依赖项,在这种情况下,仅在这种情况下。

我如何告诉 MSBuild.exe 这个文件夹是上一级的?这是唯一让人困惑的地方。

【问题讨论】:

    标签: c# msbuild continuous-integration nuget bamboo


    【解决方案1】:

    所以当我使用 MSBuild.exe 以项目而不是解决方案为目标时发生的事情是,它认为 $(SolutionDir) 是项目目录。它正在寻找$(SolutionDir).nuget\NuGet.targets 的 nuget 目标,如果从项目级别开始,这是一个不正确的路径,但在解决方案级别完全没问题。

    在我的 MSBuild.exe 命令行中,我添加了如下参数:

    /property:SolutionDir="(path of my solution)"
    

    这成功了。

    我也尝试更改项目设置,但 NuGet 总是替换它们;上述方式是我让它工作的唯一方法。

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多