.net - 在 Dev 和 Jenkins 机器之间使用不同版本的 MSBUILD.exe

标签 .net jenkins msbuild

我有一个用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/

相关文章:

c# - 无法加载 Directory.Build.props 引用的程序集

c# - 如何删除数据集的列?

c++ - 如何使用 VS2003 工具集从 VS11 中构建 C++ 项目?

c# - .net 应用程序是否有通配符扩展选项?

java - eclipse egit 工作目录 vs jenkins 和 git 方式

jenkins - 如何在 jenkins 管道中运行 docker-compose 实例

docker - 构建 jenkins docker 镜像时出错

tfs - 无法访问 MSBuild 中的 ArtifactStagingDirectory 变量

C#/.NET - 将字符代码转换为等效字符的方法

c# - 等待清除浏览器缓存