Dela via


Byggegenskaper för Container Tools

Du kan anpassa hur Visual Studio skapar dina containerprojekt genom att ange de egenskaper som MSBuild använder för att skapa projektet. Du kan till exempel ändra namnet på Dockerfile, ange taggar och etiketter för dina bilder, ange ytterligare argument som skickas till Docker-kommandon och styra om Visual Studio utför vissa prestandaoptimeringar, till exempel att skapa utanför containermiljön. Du kan också ange felsökningsegenskaper som namnet på den körbara filen som ska startas och de kommandoradsargument som ska anges.

Om du vill ange värdet för en egenskap redigerar du projektfilen. Anta till exempel att din Dockerfile heter MyDockerfile. Du kan ange egenskapen DockerfilePath i projektfilen på följande sätt.

<PropertyGroup>
   <DockerfilePath>MyDockerfile</DockerfilePath>
</PropertyGroup>

Anmärkning

Egenskapen DockerfilePath ersätter den inaktuella egenskapen DockerfileFile, som fortfarande stöds i den aktuella versionen av Visual Studio.

Om du vill ange värdet för en egenskap redigerar du projektfilen. Anta till exempel att din Dockerfile heter MyDockerfile. Du kan ange egenskapen DockerfileFile i projektfilen på följande sätt.

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

Du kan lägga till egenskapsinställningen i ett befintligt PropertyGroup element eller skapa ett nytt PropertyGroup element om det inte finns något.

Egenskaper för .NET SDK-projekt

I det här avsnittet beskrivs de MSBuild-egenskaper som gäller när du väljer containerversionstypen .NET SDK.

Det finns bara en egenskap, EnableSdkContainerDebugging, i projektfilen som behövs för .NET SDK-containerbaserade projekt. Det måste anges till True för .NET SDK-projekt för att aktivera felsökning.

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

Egenskaper för Dockerfile-projekt

I det här avsnittet beskrivs de MSBuild-egenskaper som gäller när du väljer Container build-typen Dockerfile.

I följande tabell visas de MSBuild-egenskaper som är tillgängliga för Dockerfile-projekt. NuGet-paketversionen gäller för Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Egenskapsnamn Description Standardvärde NuGet-paketversion
ContainerDevelopmentMode Styr om "build-on-host"-optimering ("Snabbläge"-felsökning) är aktiverat. Tillåtna värden är Snabba och Vanliga. Snabbt 1.0.1872750 eller senare
ContainerVsDbgPath Sökvägen för VSDBG-felsökningsprogrammet. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 eller senare
DockerDebuggeeArguments Vid felsökning instrueras felsökaren att skicka dessa argument till den körbara filen som startas. Inte tillämpligt för ASP.NET .NET Framework-projekt 1.7.8 eller senare
DockerDebuggeeProgram Vid felsökning instrueras felsökningsprogrammet att starta den körbara filen. För .NET Core- och .NET 5- och senare projekt: dotnet, ASP.NET .NET Framework-projekt: Inte tillämpligt (IIS (Internet Information Services) används alltid) 1.7.8 eller senare
DockerDebuggeeKillProgram Det här kommandot används för att stoppa körningsprocessen i en container. Inte tillämpligt för ASP.NET .NET Framework-projekt 1.7.8 eller senare
DockerDebuggeeWorkingDirectory Vid felsökning instrueras felsökningsprogrammet att använda den här sökvägen som arbetskatalog. C:\app (Windows) eller /app (Linux) 1.7.8 eller senare
DockerDefaultTargetOS Standardoperativsystemet för mål som används när du skapar Docker-avbildningen. Anges av Visual Studio. 1.0.1985401 eller senare
DockerImageLabels Standarduppsättningen med etiketter som tillämpas på Docker-avbildningen. com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 eller senare
DockerFastModeProjectMountDirectory I snabbt läge styr den här egenskapen var katalogen för projektutdata är volymmonterad i containern som körs. C:\app (Windows) eller /app (Linux) 1.9.2 eller senare
DockerfileBuildArguments Ytterligare argument som skickas till Docker build-kommandot . Ej tillämpbart. 1.0.1872750 eller senare
DockerfileContext Standardkontexten som används när du skapar Docker-avbildningen, som en sökväg i förhållande till Dockerfile. Anges av Visual Studio när Docker-stöd läggs till i ett projekt. I .NET Framework-projekt anger du till "". (projektmappen) och i .NET Core- och .NET 5- och senare projekt anges den till den relativa sökvägen till lösningsmappen (vanligtvis ".."). 1.0.1872750 eller senare
DockerfileFastModeStage Dockerfile-fasen (dvs. målet) som ska användas när du skapar avbildningen i felsökningsläge. Första fasen hittades i Dockerfile (vanligtvis bas) -
DockerfileFile Beskriver standard dockerfile som ska användas för att skapa/köra containern för projektet. Det här värdet kan vara en sökväg. Dockerfile 1.0.1872750 eller senare
DockerfileRunArguments Ytterligare argument skickas till Docker-körningskommandot . Ej tillämpbart. 1.0.1872750 eller senare
DockerfileRunEnvironmentFiles Semikolonavgränsad lista över miljöfiler som tillämpas under Docker-körningen. Ej tillämpbart. 1.0.1872750 eller senare
DockerfileTag Taggen som ska användas när du skapar Docker-avbildningen. Vid felsökning läggs en ":d ev" till i taggen. Sammansättningsnamn efter borttagning av icke-numeriska tecken med följande regler:
Om den resulterande taggen är numerisk infogas "bild" som ett prefix (till exempel image2314)
Om den resulterande taggen är en tom sträng används "bild" som tagg.
1.0.1872750 eller senare

I följande tabell visas de MSBuild-egenskaper som är tillgängliga för Dockerfile-projekt. NuGet-paketversionen gäller för Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Några av egenskaperna och objektlistorna i följande tabell är likvärdiga ersättningar för föråldrade egenskaper. I så fall namnges även den föråldrade egenskap som den ersätter. Vi rekommenderar att du uppdaterar projekt så att de använder de egenskaper som stöds för närvarande. Stöd för föråldrade egenskaper kan tas bort i en framtida uppdatering av Visual Studio.

Vissa egenskaper som anges som föråldrade ersätts av motsvarande värden i launchsettings.jsonoch en ersätts av MSBuild-objektlistan.

Egenskapsnamn Description Standardvärde Lägsta NuGet-paketversion
ContainerDevelopmentMode Styr om "build-on-host"-optimering ("Snabbläge"-felsökning) är aktiverat. Tillåtna värden är Snabba och Vanliga. Snabbt 1.0.1872750
ContainerVsDbgPath Sökvägen för VSDBG-felsökningsprogrammet. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401
ContainerLabel

(ersätter DockerImageLabels)
Standarduppsättningen med etiketter som tillämpas på Docker-avbildningen.

ContainerLabel är en MSBuild-objektlista, inte en egenskap.
com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.23.0 för ContainerLabel

1.5.4 för DockerImageLabels
ContainerFastModeProjectMountDirectory

(ersätter DockerFastModeProjectMountDirectory)
I snabbt läge styr den här egenskapen var katalogen för projektutdata är volymmonterad i containern som körs. C:\app (Windows) eller /app (Linux) 1.23.0 för ContainerFastModeProjectMountDirectory

1.9.2 för DockerFastModeProjectMountDirectory
ContainerBuildArguments

(ersätter DockerfileBuildArguments)
Ytterligare argument som skickas till container build-kommandot. Se Docker build eller podman build. Ej tillämpbart. 1.23.0 för ContainerBuildArguements

1.0.1872750 för DockerfileBuildArguments
ContainerBuildContext

(ersätter DockerfileContext)
Standardkontexten som används när du skapar Docker-avbildningen, som en sökväg i förhållande till Dockerfile. Anges av Visual Studio när Docker-stöd läggs till i ett projekt. Den är inställd på den relativa sökvägen till lösningsmappen (vanligtvis ".."). 1.23.0 för ContainerBuildContext

1.0.1872750 för DockerfileContext
ContainerFastModeStage

(ersätter DockerfileFastModeStage)
Dockerfile-fasen (dvs. målet) som ska användas när du skapar avbildningen i felsökningsläge. Första fasen hittades i Dockerfile (vanligtvis bas) -
ContainerIncludeDefaultImageLabels (ersätter: DockerIncludeDefaultImageLabels) Om det är inställt på falseinnehåller inte standardbildtaggar com.microsoft.created-by=visual-studio och com.microsoft.visual-studio.project-name=$(MSBuildProjectName). Sann 1.23.0 för ContainerIncludeDefaultImageLabels
ContainerLabelBuiltImages (ersätter DockerLabelBuiltImages) Ta med etiketter på byggda bilder. Om det är falskt läggs inga etiketter till, inklusive användardefinierade etiketter. Sann 1.23.0 för ContainerLabelBuiltImages
DockerfilePath

(ersätter DockerfileFile)
Beskriver standard dockerfile som ska användas för att skapa/köra containern för projektet. Dockerfile 1.23.0 för DockerfilePath

1.0.1872750 för DockerfileFile
ContainerRepository

(ersätter DockerRepository)
Lagringsplatsen som ska användas i etiketten, till exempel webapplication1 i etiketten webapplication1:dev. Sammansättningsnamnet. 1.23.0 för ContainerRepository
ContainerImageTag eller ContainerImageTags

(ersätter DockerfileTag)
Taggen som ska användas när avbildningen skapas. Vid felsökning läggs en ":d ev" till i taggen. Sammansättningsnamn efter borttagning av icke-numeriska tecken med följande regler:
Om den resulterande taggen är numerisk infogas "bild" som ett prefix (till exempel image2314)
Om den resulterande taggen är en tom sträng används "bild" som tagg.
1.23.0 för ContainerImageTag, ContainerImageTags

1.0.1872750 för DockerfileTag.
DockerDebuggeeArguments

(föråldrad, använd commandLineArgs i launchsettings.json)
Vid felsökning instrueras felsökaren att skicka dessa argument till den körbara filen som startas. - 1.7.8
DockerDebuggeeProgram

(föråldrad, använd executablePath i launchsettings.json)
Vid felsökning instrueras felsökningsprogrammet att starta den körbara filen. - 1.7.8
DockerDebuggeeKillProgram Det här kommandot används för att stoppa körningsprocessen i en container. - 1.7.8
DockerDebuggeeWorkingDirectory

(föråldrad; används workingDirectory i launchsettings.json)
Vid felsökning instrueras felsökningsprogrammet att använda den här sökvägen som arbetskatalog. C:\app (Windows) eller /app (Linux) 1.7.8
DockerDefaultTargetOS Standardoperativsystemet för mål som används när du skapar Docker-avbildningen. Anges av Visual Studio. 1.0.1985401
DockerfileRunArguments

(föråldrad, använd containerRunArguments i launchsettings.json)
Ytterligare argument skickas till Docker-körningskommandot . Ej tillämpbart. 1.0.1872750
DockerfileRunEnvironmentFiles

(föråldrad, använd containerRunEnvironmentFiles i launchsettings.json)
Semikolonavgränsad lista över miljöfiler som tillämpas under Docker-körningen. Ej tillämpbart. 1.0.1872750

ContainerRepository och ContainerImageTag (eller ContainerImageTags) ger möjlighet att ange de två delarna av en bildetikett, lagringsplatsen och en eller flera taggar (till exempel webapp1:alpha). I tidigare versioner av Visual Studio kunde du använda DockerfileTag egenskapen för att ange lagringsplatsen och en enda tagg, men det hade begränsningar, till exempel att det inte fanns någon möjlighet att ange flera taggar. Egenskapen DockerfileTag är föråldrad. Projekt bör nu använda ContainerRepository och ContainerImageTag, och den aktuella versionen stöder ContainerImageTags även för flera taggar.

I tidigare Visual Studio-versioner var <DockerfileTag>webapp1:alpha</DockerfileTag>syntaxen . Den aktuella motsvarigheten är <ContainerRepository>webapp1</ContainerRespository> och <ContainerImageTag>alpha</ContainerImageTag>, eller <ContainerImageTags>alpha;latest</ContainerImageTags> om du vill ha flera taggar.

Example

Följande projektfil visar exempel på några av dessa inställningar.

 <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>
    <!-- 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. -->
    <ContainerBuildContext>.</ContainerBuildContext>
    <!-- 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 -->
    <ContainerBuildArguments>-t contoso/front-end:v2.0</ContainerBuildArguments>
  </PropertyGroup>

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

</Project>

Anmärkning

Byggkontexten, som du kan ange genom att ange ett värde för ContainerBuildContext (eller DockerfileContext), skiljer sig vanligtvis i Visual Studio för projekt från vad docker build (eller podman build) använder när du kör den från kommandoraden. Avvikelsen från beteendet för kommandoraden build är nödvändigt för att säkerställa att byggartefakter på lösningsnivå kan inkluderas.

När du anropar docker build (eller podman build) anger du alltid en byggkontext och du kan också ange en sökväg till Dockerfile. Standardvärdet är att Dockerfile finns i kontextens rot, men du kan använda -f flaggan för att ange en alternativ plats. Du kan till exempel skapa med docker build -f Dockerfile .. från projektkatalogen eller docker build -f ProjectName/Dockerfile . från lösningskatalogen.

 <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>

Anmärkning

Docker-kontexten, som du kan ange genom att ange ett värde för DockerfileContext, skiljer sig vanligtvis i Visual Studio för projekt som är inriktade på .NET Core (inklusive .NET 5 och senare) från vad som docker build används när du kör den från kommandoraden. Avvikelsen från beteendet docker build för är nödvändig för att säkerställa att byggartefakter på lösningsnivå kan inkluderas.

När du anropar docker buildanger du alltid en byggkontext och du kan också ange en sökväg till Dockerfile. Standardvärdet är att Dockerfile finns i kontextens rot, men du kan använda -f flaggan för att ange en alternativ plats. Du kan till exempel skapa med docker build -f Dockerfile .. från projektkatalogen eller docker build -f ProjectName/Dockerfile . från lösningskatalogen.

Nästa steg

Information om MSBuild-egenskaper finns i MSBuild-egenskaper.

Se även

Egenskaper för Docker Compose-kompilering

Startinställningar för containerverktyg

reserverade och välkända egenskaper för MSBuild