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 (Internet Information Services (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>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>8c7ab9a5-d578-4c40-8b6d-54d174002229</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.20.1" />
</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