Windows docker 容器中缺少 Microsoft.Cpp.Default.props
Posted
技术标签:
【中文标题】Windows docker 容器中缺少 Microsoft.Cpp.Default.props【英文标题】:Missing Microsoft.Cpp.Default.props inside Windows docker container 【发布时间】:2021-09-30 11:54:10 【问题描述】:我正在尝试使用 Visual Studio 构建工具构建 Windows docker 映像。正在安装构建工具,但缺少 Microsoft.Cpp.Default.props。
*error MSB4019: The imported project "C:\
Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC\v160\Microsoft.Cpp.Default.props" was not found. Confirm that the expression in the Import declaration "C:\P
rogram Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC\v160\\Microsoft.Cpp.Default.props" is correct, and that the file exists on disk.*
下面是来自 dockerfile 的 sn-p:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
WORKDIR "C:\Users\ContainerUser"
RUN powershell.exe New-Item BuildSoftware -ItemType "directory"
COPY vs_buildtools__1759529960.1620654219.exe "C:\Users\ContainerUser\BuildSoftware"
RUN C:\Users\ContainerUser\SocialBuild\vs_buildtools__1759529960.1620654219.exe --quiet --add --includeRecommended Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.WebBuildTools --add Microsoft.VisualStudio.Workload.NetCoreBuildTools --add Microsoft.VisualStudio.Component.Windows10SDK.18362 --add Microsoft.VisualStudio.Workload.VCTools –-includeOptional --add Microsoft.Net.Component.4.7.TargetingPack --add Microsoft.VisualStudio.Workload.OfficeBuildTools --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.VisualStudioExtensionBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --wait
即使使用 Microsoft.VisualStudio.Workload.VCTools,cpp 文件/工具也不会安装在 Docker 容器中。
还尝试在 docker conatiner 中使用 npm install --global --production windows-build-tools
及以下巧克力命令进行安装。
choco install vcredist-all -Y
choco install visualstudio2019buildtools -Y
choco install visualstudio2019community -Y*
寻找问题的最佳解决方案
【问题讨论】:
我现在在同一个地方,你找到解决办法了吗?我正在尝试找出哪些工作负载会添加这些文件。 【参考方案1】:经过大量谷歌搜索和尝试,我创建了一个包含 *.cpp.props 文件的 Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/sdk:3.5-windowsservercore-ltsc2019
ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
SHELL ["cmd", "/S", "/C"]
RUN (start /w C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache modify `
--installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\BuildTools" `
--add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools `
--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended `
--add Microsoft.Component.MSBuild `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10240 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
--remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
--remove Microsoft.VisualStudio.Component.Windows81SDK `
|| IF "%ERRORLEVEL%"=="3010" EXIT 0)
ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
标记必须显式添加的 MSBuild 组件。可能不需要“ManagedDesktopBuildTools”,但对于我的项目,我结合了 C#/C++ 解决方案。
【讨论】:
以上是关于Windows docker 容器中缺少 Microsoft.Cpp.Default.props的主要内容,如果未能解决你的问题,请参考以下文章
缺少 docker-current 文件导致 docker 服务无法在 Centos 7 中启动