解决方案在Visual Studio中构建,但Jenkins引发资产异常

时间:2018-03-19 13:17:16

标签: c# jenkins msbuild multi-targeting

我有一个由单目标和多目标项目组成的解决方案。该解决方案可以在Visual Studio 2017和VS 2017开发人员命令提示符中构建,没有任何问题 我通过以下代码在VS 2017的开发人员命令提示符中构建解决方案

msbuild MySolution.sln /t:Rebuild /p:Configuration=Release

我想在Jenkins中执行此过程。然后我将以下命令添加到Jenkins。

pushd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools"
call VsDevCmd.bat
msbuild "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release

当我构建Jenkins项目时,它会引发异常。

C:\Program Files\dotnet\sdk\2.1.101\Sdks\Microsoft.NET.Sdk\build\
Microsoft.PackageDependencyResolution.targets(327,5): error : Assets file 
'C:\Workspace\My Solution\Source\MyProject\obj\project.assets.json' not found.
Run a NuGet package restore to generate this file. 

非常感谢

2 个答案:

答案 0 :(得分:0)

Visual Studio通常会为您执行nuget包还原(可以在设置中关闭它。)

从命令行构建解决方案是另一回事。你不是在使用visual studio,而是使用普通的MSBuild。 MSBuild不知道你的nuget包。

所以你必须先手动恢复你的nuget包。

pushd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools"
call VsDevCmd.bat
nuget restore "C:\Workspace\My Solution\MySolution.sln"
msbuild "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release

答案 1 :(得分:0)

Jenkins无法识别 msbuild 命令。当我改变下面的代码时,它开始工作。

C:\nuget.exe restore "C:\Workspace\My Solution\MySolution.sln"
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\MSBuild.exe"  "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release;VisualStudioVersion=15.0

我添加了nuget restore命令,并使用 msbuild.exe 的完整路径更改了 msbuild 命令。最后我将 VisualStudioVersion 作为参数。

感谢@c-johnson