解决方案在 Visual Studio 中构建,但 Jenkins 抛出资产异常
Solution builds in Visual Studio but Jenkins throws an assets exception
我有一个包含单目标和多目标项目的解决方案。该解决方案可以在 Visual Studio 2017 和 Developer Command Prompt for VS 2017 中构建,没有问题。
我通过以下代码在 VS 2017 的开发人员命令提示符中构建解决方案
msbuild MySolution.sln /t:Rebuild /p:Configuration=Release
我想在 Jenkins 中完成这个过程。然后我向 Jenkins 添加了以下命令。
pushd "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\Tools"
call VsDevCmd.bat
msbuild "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release
当我构建 Jenkins 项目时它抛出异常。
C:\Program Files\dotnet\sdk.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.
非常感谢
Visual Studio 通常会为您恢复 nuget 包(可以在设置中关闭)。
从命令行构建解决方案是另一回事。您没有使用 visual studio,而是使用普通的旧 MSBuild。 MSBuild 不知道您的 nuget 包。
所以你必须先手动恢复你的 nuget 包。
pushd "C:\Program Files (x86)\Microsoft Visual Studio17\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
Jenkins 无法识别 msbuild 命令。当我像下面这样更改代码时,它开始工作了。
C:\nuget.exe restore "C:\Workspace\My Solution\MySolution.sln"
"C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.0\Bin\amd64\MSBuild.exe" "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release;VisualStudioVersion=15.0
我添加了 nuget restore 命令并更改了 msbuild 命令,完整路径为 msbuild.exe。最后我把 VisualStudioVersion 作为参数。
我有一个包含单目标和多目标项目的解决方案。该解决方案可以在 Visual Studio 2017 和 Developer Command Prompt for VS 2017 中构建,没有问题。
我通过以下代码在 VS 2017 的开发人员命令提示符中构建解决方案
msbuild MySolution.sln /t:Rebuild /p:Configuration=Release
我想在 Jenkins 中完成这个过程。然后我向 Jenkins 添加了以下命令。
pushd "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\Tools"
call VsDevCmd.bat
msbuild "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release
当我构建 Jenkins 项目时它抛出异常。
C:\Program Files\dotnet\sdk.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.
非常感谢
Visual Studio 通常会为您恢复 nuget 包(可以在设置中关闭)。
从命令行构建解决方案是另一回事。您没有使用 visual studio,而是使用普通的旧 MSBuild。 MSBuild 不知道您的 nuget 包。
所以你必须先手动恢复你的 nuget 包。
pushd "C:\Program Files (x86)\Microsoft Visual Studio17\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
Jenkins 无法识别 msbuild 命令。当我像下面这样更改代码时,它开始工作了。
C:\nuget.exe restore "C:\Workspace\My Solution\MySolution.sln"
"C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.0\Bin\amd64\MSBuild.exe" "C:\Workspace\My Solution\MySolution.sln" /t:Build /p:Configuration=Release;VisualStudioVersion=15.0
我添加了 nuget restore 命令并更改了 msbuild 命令,完整路径为 msbuild.exe。最后我把 VisualStudioVersion 作为参数。