在 CI 中通过 MSBuild.exe 发布 Web 应用程序时,NuGet 定位了错误的文件夹
NuGet targets wrong folder when publishing web application via MSBuild.exe in CI
我正在尝试在我们的 CI 服务器 (bamboo) 中设置一个项目。
我有一个 API 解决方案,其中包含多个项目(数据访问、服务接口、WebApi、测试、其他一些……你懂的)。我 运行 nuget.exe 在脚本中引入解决方案级别的必需包。这些包进入解决方案目录 .nuget
.
当我使用 MSBuild 创建二进制文件时,一切正常。然后我在测试项目上使用 MSTest 运行ner;仍然一切都很好。然后我关闭了目标 Web 服务,然后 运行 msbuild.exe
对参数为 /p:DeployOnBuild=true /p:PublishProfile=INTENV
.
的 WebApi 项目
这就是竹子对我吠叫的地方。我收到这样的失败错误消息:
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 这个文件夹在上一级?这是它唯一感到困惑的地方。
所以当我以项目而不是 MSBuild.exe 的解决方案为目标时发生的事情是它认为 $(SolutionDir)
是项目目录。它正在寻找位于 $(SolutionDir).nuget\NuGet.targets
的 nuget 目标,如果从项目级别开始,这是一个不正确的路径,但在解决方案级别完全没问题。
在我的MSBuild.exe命令行上,我添加了一个参数如下:
/property:SolutionDir="(path of my solution)"
这成功了。
我也尝试过更改项目设置,但 NuGet 总是替换它们;上面的方式是我让它工作的唯一方法。
我正在尝试在我们的 CI 服务器 (bamboo) 中设置一个项目。
我有一个 API 解决方案,其中包含多个项目(数据访问、服务接口、WebApi、测试、其他一些……你懂的)。我 运行 nuget.exe 在脚本中引入解决方案级别的必需包。这些包进入解决方案目录 .nuget
.
当我使用 MSBuild 创建二进制文件时,一切正常。然后我在测试项目上使用 MSTest 运行ner;仍然一切都很好。然后我关闭了目标 Web 服务,然后 运行 msbuild.exe
对参数为 /p:DeployOnBuild=true /p:PublishProfile=INTENV
.
这就是竹子对我吠叫的地方。我收到这样的失败错误消息:
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 这个文件夹在上一级?这是它唯一感到困惑的地方。
所以当我以项目而不是 MSBuild.exe 的解决方案为目标时发生的事情是它认为 $(SolutionDir)
是项目目录。它正在寻找位于 $(SolutionDir).nuget\NuGet.targets
的 nuget 目标,如果从项目级别开始,这是一个不正确的路径,但在解决方案级别完全没问题。
在我的MSBuild.exe命令行上,我添加了一个参数如下:
/property:SolutionDir="(path of my solution)"
这成功了。
我也尝试过更改项目设置,但 NuGet 总是替换它们;上面的方式是我让它工作的唯一方法。