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

时间:2017-10-23 06:52:27

标签: visual-studio performance docker asp.net-core msbuild

使用当前的microsoft / aspnetcore-build:2.0(或simimarly标签2.0.2)Docker容器映像,构建一个简单的ASP.NET Core应用程序总是需要至少20秒。

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

如何在我的Dockerfile管道中集成最新版本的msbuild?用最新的msbuild连接当前的dotnet 2.0.2 sdk是否容易?也许有一个特定的标签可以真正获得最新的msbuild / dotnet sdk?

我的机器规格:

  • Windows版本:10.0.15063 Build 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 Core(s),4个逻辑处理器
  • 磁盘型号:Samsung SSD 840 EVO 500GB

1 个答案:

答案 0 :(得分:2)

  

如何在我的Dockerfile管道中集成最新版本的msbuild?

您可以使用 Dockerfile 将Build Tools安装到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的下载路径。

有关详细信息,请参阅Install Build Tools into a Container3 Steps to MSBuild with Docker