visual-studio - 将文件夹添加或复制到 Windows Docker 容器

标签 visual-studio docker windows-container

我想将文件夹复制到 Windows 容器特定目录。我无法添加它。
我试过

ADD VC  C:\TEMP\VC
这可行并将我的 VC 文件夹放入 Windows 容器文件夹 C:\TEMP\VC .
但是当我尝试时:
ADD VC  C:\Program Files (x86)\Microsoft Visual Studio\2019\buildtools\MSBuild\Microsoft\VC
我得到错误:
Step 4/6 : ADD VC  C:\Program Files (x86)\Microsoft Visual Studio\2019\buildtools\MSBuild\Microsoft\VC
ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder462071631\Program: The system cannot find the file specified.
我也试过:
ADD VC  "C:\Program Files (x86)\Microsoft Visual Studio\2019\buildtools\MSBuild\Microsoft\VC"
failed to process "\"C:\\Program": unexpected end of statement while looking for matching double-quote

Step 4/6 : ADD VC  C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\buildtools\\MSBuild\\Microsoft\\VC
ADD failed: CreateFile \\?\C:\ProgramData\Docker\tmp\docker-builder633588211\Program: The system cannot find the file specified.
没有任何效果。
文件
# escape=`

# Use the latest Windows Server Core image with .NET Framework 4.8.
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019

# Restore the default Windows shell for correct batch processing.
SHELL ["cmd", "/S", "/C"]

# Download the Build Tools bootstrapper.
ADD https://aka.ms/vs/16/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
ADD VC  C:\TEMP\VC   
#ADD /ConsoleApplication2\Debug\ConsoleApplication2.exe   C:\
# Install Build Tools with the Microsoft.VisualStudio.Workload.AzureBuildTools workload, excluding workloads and components with known issues.
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
    --installPath C:\BuildTools `
    --add Microsoft.Component.MSBuild `
    --add Microsoft.VisualStudio.Component.WinXP`
    --add Microsoft.VisualStudio.Component.VC.14.20.x86.x64 `
    --add Microsoft.VisualStudio.Component.VC.140`
    --add Microsoft.VisualStudio.Component.VC.Redist.MSM`
    --add Microsoft.VisualStudio.Component.VC.14.25.CLI.Support`
    --add Microsoft.VisualStudio.Component.NuGet.BuildTools`
    --add Microsoft.VisualStudio.Component.Roslyn.Compiler`
    -add Microsoft.VisualStudio.ComponentGroup.VisualStudioExtensionBuildTools.Prerequisites`
    -add Microsoft.VisualStudio.Component.VSSDKBuildTools`
    --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended \ `
     --add Microsoft.VisualStudio.Component.Static.Analysis.Tools \`
    --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \`
    --add Microsoft.VisualStudio.Component.VC.CMake.Project \`
    --add Microsoft.VisualStudio.Component.VC.CoreBuildTools \`
    --add Microsoft.VisualStudio.Component.VC.ATLMFC \`
    --add Microsoft.VisualStudio.Component.VC.ATL \`
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop \`
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP \`
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native \`
    --add Microsoft.VisualStudio.Component.Windows10SDK \`
    --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81 \`
    --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest \`
    --add Microsoft.Component.VC.Runtime.UCRTSDK \`
    --add Microsoft.VisualStudio.Component.WinXP \`
    --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

# Define the entry point for the docker container.
# This entry point starts the developer command prompt and launches the PowerShell shell.
ENTRYPOINT ["C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&","powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

最佳答案

给定以下 Dockerfile

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
COPY ["VC", "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/MSBuild/Microsoft/VC"]
构建目录如下
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          16/07/2020    12:34                VC
-a---          16/07/2020    14:36            174 Dockerfile
运行 docker build 会将 build root 中的 VC 文件夹的内容复制到目标的 VC 文件夹中,不会出错
C:\temp\test> docker build -t testcopy .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
 ---> be6035551084
Step 2/2 : COPY ["VC", "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/MSBuild/Microsoft/VC"]
 ---> 7521a3e989ce
Successfully built 7521a3e989ce
Successfully tagged testcopy:latest
如果您然后运行创建的容器,您应该会发现文件已正确复制
C:\>dir "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/MSBuild/Microsoft/VC"
 Volume in drive C has no label.
 Volume Serial Number is B40D-C55F

 Directory of C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC

07/16/2020  02:37 PM    <DIR>          .
07/16/2020  02:37 PM    <DIR>          ..
07/16/2020  12:26 PM                 0 Test.txt
               1 File(s)              0 bytes
               2 Dir(s)  21,206,806,528 bytes free

如果您仍然收到错误,您可能安装了一个不可靠的 docker。该测试是在服务器 2019 上使用最新的 docker 桌面版本运行的,并且副本运行良好。

关于visual-studio - 将文件夹添加或复制到 Windows Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62551660/

相关文章:

sql-server - 将 SQL Server 数据库还原到 Linux Docker

docker - 为什么 `docker-compose up` 删除卷?

azure - 在 Windows Docker 容器上安装 Azure 文件存储

asp.net - 将ASP.Net应用程序部署到Window Server Core容器

c# - 如何在 bin/Release 中为 Visual Studio 项目创建文件夹?

c# - 如何找到解决方案中最长的方法/类?

c# - Visual Studio $(ProjectDir) 是空字符串

docker - 静态 IP 地址在 docker compose v3 中不起作用

kubernetes - Pod 内的 2 个容器是否可以共享相同的环境变量?

c# - 从 C++ 项目访问 C# DLL 中类成员的问题