.net - 在Dockerfile中使用Dotnet和MSBuild工具

标签 .net docker

我试图在dockerfile中构建一个ASP.net MVC项目,以便在容器中运行。
我尝试同时使用dotnet镜像和servercore镜像
在不同的dockerfile中,然后使用Chocolately安装其他丢失的软件包并尝试使用msbuild进行构建,但我遇到了麻烦。

FROM microsoft/windowsservercore:10.0.14393.1480
SHELL ["powershell", "-Command", "$ErrorActionPreference='Stop'; $ProgressPreference='SilentlyContinue';"]
WORKDIR /appdir
EXPOSE 80
EXPOSE 443

COPY . /appdir/
COPY /ExFin.Web/packages.config /appdir/

ENV chocolateyUseWindowsCompression 'true'
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
RUN choco install visualstudio2019buildtools -y;
RUN choco install dotnet4.5.2 -Force -y;
RUN choco install nuget.commandline --pre 

ENV NUGET_PATH "C:\Chocolatey\lib\NuGet.CommandLine.3.5.0\tools"
ENV MSBUILD_PATH "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\15.0\Bin"

RUN $env:PATH = $env:NUGET_PATH + ';' + $env:MSBUILD_PATH + ';' + $env:PATH; `
RUN [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine)

RUN nuget.exe restore packages.config -PackagesDirectory /appdir/packages/
RUN ["C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\15.0\Bin\msbuild.exe", "C:/appdir/ExFin.Web/ExFin.Web.csproj"]

错误:
失败的
  • dotnetfx(已退出-1073741502)-运行'C:\ ProgramData \ chocolatey \ lib \ dotnetfx \ tools \ ChocolateyInstall.ps1'时出错。
    有关详细信息,请参见日志。
  • visualstudio2019buildtools(已退出-1073741502)-运行'C:\ ProgramData \ chocolatey \ lib \ visualstudio2019buildtools \ tools \ ChocolateyInstall.ps1'时出错。
    有关详细信息,请参见日志。

  • 这是否意味着需要重新启动?

    最佳答案

    使用基于Windows Server Core的Microsoft的基于.NET Framework SDKDockerfile(.NET Framework Runtime)镜像。
    该图像包括:

  • .NET Framework运行时
  • Visual Studio生成工具
  • Visual Studio测试代理
  • NuGet CLI
  • .NET Framework目标包
  • ASP.NET Web目标
  • 关于.net - 在Dockerfile中使用Dotnet和MSBuild工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63934103/

    相关文章:

    docker - "are replaced with '与ansible

    c# - C# 中的正则表达式

    docker - 无法访问专用服务器上的 docker itzg/minecraft-server

    linux - 本地 CircleCI 报告 "Unexpected environment preparation error: error looking up self container id: Found multiple cgroups for outer container"

    c# - 运算符 '==' 不能应用于类型 'int' 和 'string' 的操作数

    docker - 通过 FROM 从不同的本地目录导入 Dockerfile

    docker - 带有 Docker Provider 的 Vagrant 需要 RSync 密码

    .net - Azure 媒体服务 : Get the duration of a video that needs to be encoded

    c# - 在 XAML 中添加数学公式的好方法?

    java - Java 的 WCF 通讯器是什么?