如何在Docker镜像中应用最新的msbuild?

使用目前的microsoft / aspnetcore-build:2.0(或simimarly标记2.0.2)Docker容器镜像,即使是一个简单的ASP.NET Core应用程序也需要至less20秒的时间。

当我知道msbuild的下一个版本将关注于主要的性能改进时,我试了一下。 除了当前的Visual Studio 2017 15.5 Preview(15.5.0版本1.0)之外,还有msbuild的15.5.113.63837版本。 实际上,这个版本最多只需要10秒就可以构build一个简单的应用程序,这是一个令人印象深刻的改进!

我应该如何继续为了将这个最新版本的msbuild集成到我的Dockerfilepipe道中? 将当前的dotnet 2.0.2 sdk与最新的msbuild连接起来很容易吗? 也许有一个特定的标签可以真正得到最新的msbuild / dotnet sdk?

我的机器规格:

  • Windows版本:10.0.15063生成15063
  • 系统SKU:LENOVO_MT_20CJ_BU_Think_FM_ThinkPad T550
  • 安装的物理内存(RAM):32.0 GB
  • 处理器:Intel(R)Core(TM)i7-5600U CPU @ 2.60GHz,2594 Mhz,2个核心,4个逻辑处理器
  • 磁盘型号:三星SSD 840 EVO 500GB

我应该如何继续为了将这个最新版本的msbuild集成到我的Dockerfilepipe道中?

您可以使用Dockerfile将构build工具安装到Docker容器中。 如下面的示例代码:

# ENV TEST_CONTAINER=1 \ VS_BUILDTOOLS_URI=https://aka.ms/vs/15/release/799c44140/vs_buildtools.exe \ VS_BUILDTOOLS_SHA256=FA29EB83297AECADB0C4CD41E54512C953164E64EEDD9FB9D3BF9BD70C9A2D29 \ Download vs_buildtools.exe RUN $ErrorActionPreference = 'Stop'; \ $ProgressPreference = 'SilentlyContinue'; \ $VerbosePreference = 'Continue'; \ Invoke-WebRequest -Uri $env:VS_BUILDTOOLS_URI -OutFile C:\vs_buildtools.exe; \ if ((Get-FileHash -Path C:\vs_buildtools.exe -Algorithm SHA256).Hash -ne $env:VS_BUILDTOOLS_SHA256) { throw 'Download hash does not match' } # Install Visual Studio Build Tools RUN $ErrorActionPreference = 'Stop'; \ $VerbosePreference = 'Continue'; \ $p = Start-Process -Wait -PassThru -FilePath C:\vs_buildtools.exe -ArgumentList '--quiet --nocache --wait --installPath C:\BuildTools'; \ if ($ret = $p.ExitCode) { c:\collect.exe; throw ('Install failed with exit code 0x{0:x}' -f $ret) } 

您可以将VS_BUILDTOOLS_URI更改为最新版本的msbuild的下载path。

请参阅在Docker容器中为Visual Studio 2017安装构build工具,以及使用Docker为MSBuild安装3个步骤以获取更多详细信息。