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

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

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

当我了解到 msbuild 的下一版本将重点关注重大性能改进时,我尝试了一下。当前 Visual Studio 2017 15.5 预览版(15.5.0 版本 1.0)的一部分还附带了 msbuild 版本 15.5.113.63837。事实上,这个版本最多只需要 10 秒即可构建一个简单的应用程序,这是一个令人印象深刻的改进!

我应该如何继续才能将最新版本的 msbuild 集成到我的 Dockerfile 管道中?将当前的 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

最佳答案

How should I proceed in order to integrate this latest version of msbuild in my Dockerfile pipeline?

您可以使用 Dockerfile 将构建工具安装到 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了解更多详细信息。

关于visual-studio - 如何在 Docker 镜像中应用最新的 msbuild?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46883458/

相关文章:

java - 如何使用 Java 在 heroku/docker 中创建临时目录?

visual-studio - VS 2017 在 IIS Express 配置文件上调试 MVC 核心网站总是超时

android - 发现 vs-android 不适合 java

java - 由于我的黑客等级解决方案超时而终止

docker - 如何将 docker-compose 与 tomcat 一起使用

logging - Docker rsyslog 驱动程序在实际消息之前添加消息长度

c# - 在 Visual Studio 中管理大量重叠控件

visual-studio - 为什么/Gm 是调试配置中的默认选项而不是/MP?

java - 删除冗余的 JUnit 测试套件测试

java - PixelGrabber 与 getRGB 哪个更快?