Proprietà di compilazione di Strumenti contenitore

È possibile personalizzare il modo in cui Visual Studio compila i progetti contenitore impostando le proprietà usate da MSBuild per compilare il progetto. Ad esempio, è possibile modificare il nome del Dockerfile, specificare tag ed etichette per le immagini, fornire argomenti aggiuntivi passati ai comandi Docker e controllare se Visual Studio esegue determinate ottimizzazioni delle prestazioni, ad esempio la compilazione all'esterno dell'ambiente contenitore. È anche possibile impostare le proprietà di debug, ad esempio il nome dell'eseguibile da avviare, e gli argomenti della riga di comando da fornire.

Per impostare il valore di una proprietà, modificare il file di progetto. Si supponga, ad esempio, che il Dockerfile sia denominato MyDockerfile. È possibile impostare la DockerfileFile proprietà nel file di progetto come indicato di seguito.

<PropertyGroup>
   <DockerfileFile>MyDockerfile</DockerfileFile>
</PropertyGroup>

È possibile aggiungere l'impostazione della proprietà a un elemento esistente PropertyGroup o, in caso contrario, creare un nuovo PropertyGroup elemento.

Proprietà per i progetti .NET SDK

Questa sezione descrive le proprietà di MSBuild che si applicano quando si sceglie il tipo di compilazione del contenitore .NET SDK.

È presente una sola proprietà, EnableSdkContainerDebugging, nel file di progetto necessario per i progetti in contenitori .NET SDK. Deve essere impostato su True per i progetti .NET SDK per abilitare il debug.

<PropertyGroup>
   <EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>

Proprietà per i progetti Dockerfile

Questa sezione descrive le proprietà di MSBuild che si applicano quando si sceglie il tipo di compilazione del contenitore Dockerfile.

La tabella seguente illustra le proprietà di MSBuild disponibili per i progetti Dockerfile. La versione del pacchetto NuGet si applica a Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Nome proprietà Descrizione Default value Versione del pacchetto NuGet
ContainerDevelopmentMode Controlla se l'ottimizzazione "build-on-host" (debug in modalità rapida) è abilitata. I valori consentiti sono Fast e Regular. Veloce 1.0.1872750 o versione successiva
ContainerVsDbgPath Percorso del debugger VSDBG. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 o versione successiva
DockerDebuggeeArguments Durante il debug, al debugger viene richiesto di passare questi argomenti all'eseguibile avviato. Non applicabile ai progetti .NET Framework ASP.NET 1.7.8 o versione successiva
DockerDebuggeeProgram Durante il debug, al debugger viene richiesto di avviare il file eseguibile. Per i progetti .NET Core e .NET 5 e versioni successive: dotnet, ASP.NET progetti .NET Framework: non applicabile (IIS viene sempre usato) 1.7.8 o versione successiva
DockerDebuggeeKillProgram Questo comando viene usato per terminare il processo in esecuzione in un contenitore. Non applicabile ai progetti .NET Framework ASP.NET 1.7.8 o versione successiva
DockerDebuggeeWorkingDirectory Durante il debug, al debugger viene richiesto di usare questo percorso come directory di lavoro. C:\app (Windows) o /app (Linux) 1.7.8 o versione successiva
DockerDefaultTargetOS Sistema operativo di destinazione predefinito usato per la compilazione dell'immagine Docker. Impostato da Visual Studio. 1.0.1985401 o versione successiva
DockerImageLabels Set predefinito di etichette applicate all'immagine Docker. com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 o versione successiva
DockerFastModeProjectMountDirectory In modalità rapida questa proprietà controlla la posizione in cui la directory di output del progetto viene montata nel contenitore in esecuzione. C:\app (Windows) o /app (Linux) 1.9.2 o versione successiva
DockerfileBuildArguments Argomenti aggiuntivi passati al comando di compilazione Docker. Non applicabile. 1.0.1872750 o versione successiva
DockerfileContext Contesto predefinito usato durante la compilazione dell'immagine Docker, come percorso relativo al Dockerfile. Impostato da Visual Studio quando il supporto di Docker viene aggiunto a un progetto. Nei progetti .NET Framework impostare su "." (la cartella del progetto) e nei progetti .NET Core e .NET 5 e versioni successive, viene impostato sul percorso relativo della cartella della soluzione (in genere ".."). 1.0.1872750 o versione successiva
DockerfileFastModeStage Fase Dockerfile (ovvero destinazione) da usare durante la compilazione dell'immagine in modalità di debug. Prima fase trovata nel Dockerfile (in genere di base)
DockerfileFile Descrive il Dockerfile predefinito da usare per compilare/eseguire il contenitore per il progetto. Questo valore può essere un percorso. Dockerfile 1.0.1872750 o versione successiva
DockerfileRunArguments Argomenti aggiuntivi passati al comando docker run . Non applicabile. 1.0.1872750 o versione successiva
DockerfileRunEnvironmentFiles Elenco delimitato da punto e virgola dei file di ambiente applicati durante l'esecuzione di Docker. Non applicabile. 1.0.1872750 o versione successiva
DockerfileTag Tag da usare per la compilazione dell'immagine Docker. Nel debug viene aggiunto un ":d ev" al tag . Nome dell'assembly dopo aver rimosso i caratteri non alfanumerici con le regole seguenti:
Se il tag risultante è tutto numerico, "image" viene inserito come prefisso (ad esempio, image2314)
Se il tag risultante è una stringa vuota, "image" viene usato come tag.
1.0.1872750 o versione successiva

Esempio

Il file di progetto seguente mostra esempi di alcune di queste impostazioni.

 <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UserSecretsId>feae72bf-2368-4487-b6c6-546c19338cb1</UserSecretsId>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <!-- In CI/CD scenarios, you might need to change the context. By default, Visual Studio uses the
         folder above the Dockerfile. The path is relative to the Dockerfile, so here the context is
         set to the same folder as the Dockerfile. -->
    <DockerfileContext>.</DockerfileContext>
    <!-- Set `docker run` arguments to mount a volume -->
    <DockerfileRunArguments>-v $(MSBuildProjectDirectory)/host-folder:/container-folder:ro</DockerfileRunArguments>
    <!-- Set `docker build` arguments to add a custom tag -->
    <DockerfileBuildArguments>-t contoso/front-end:v2.0</DockerfileBuildArguments>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.6" />
  </ItemGroup>

</Project>

Nota

Il contesto Docker, che è possibile impostare fornendo un valore per DockerfileContext, è in genere diverso in Visual Studio per i progetti destinati a .NET Core (incluso .NET 5 e versioni successive) da ciò che docker build viene usato quando viene eseguito dalla riga di comando. La partenza dal comportamento di è necessaria per garantire che gli artefatti di compilazione a livello di docker build soluzione possano essere inclusi.

Quando si chiama docker build, si specifica sempre un contesto di compilazione e facoltativamente è possibile specificare un percorso al Dockerfile. Il valore predefinito è che il Dockerfile si trova nella radice del contesto, ma è possibile usare il -f flag per specificare una posizione alternativa. Ad esempio, è possibile eseguire la compilazione con docker build -f Dockerfile .. dalla directory del progetto o docker build -f ProjectName/Dockerfile . dalla directory della soluzione.

Passaggi successivi

Per informazioni sulle proprietà di MSBuild in genere, vedere Proprietà di MSBuild.

Vedi anche

Proprietà di compilazione di Docker Compose

Impostazioni di avvio di Strumenti contenitore

Proprietà riservate e note MSBuild