我有一个用VS2017开发的C#项目。
运行 Jenkins 的服务器没有安装 VS。我在开发计算机和服务器上安装了.NET 4.7。
这是我输入 msbuild.exe/version 时得到的结果:
Microsoft (R) 构建引擎版本 XXX(见下文)
在开发中,我有 2 个 MSBUILD.exe:
- C:...\MicrosoftVisualStudio\2017\Pro\MSBuild\15.0\Bin: 15.1.1012.6693
- C:\Windows\Microsoft.NET\Framework\v4.0.30319: 4.7.2053.0
在服务器上:C:\Windows\Microsoft.NET\Framework\v4.0.30319: 4.7.2053.0
我假设当我在 VS2017 中构建项目时,它使用位于 MicrosoftVisualStudio 文件夹中的 MSBUILD.exe。
我现在担心使用不同版本的 MSBUILD.exe 在 Jenkins 机器上构建?最好的方法是什么?将文件夹 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild 复制到 Jenkins 计算机吗?
最佳答案
这取决于您使用的 MSBuild 功能。
构建在 VS 2017 中开发的项目的安全方法是使用完整 VS 安装或 Build Tools for Visual Studio 2017
中已安装的 VS 版本的 MSBuild (15) 进行构建。 .
尽管 MSBulid 的 .NET Framework 版本能够构建很多项目,但它仅限于较旧的 C# 版本,因此您必须安装 Microsoft.Net.Compilers
NuGet 包来替换编译器。但 VS 2017 引入了新的 MSBuild 语法功能以及构建任务,这些功能无法修补到 MSBuild 的旧版本中,因此强烈建议不要使用它。
关于.net - 在 Dev 和 Jenkins 机器之间使用不同版本的 MSBUILD.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45465363/