Delen via


Build-eigenschappen van Container Tools

U kunt aanpassen hoe Visual Studio uw containerprojecten bouwt door de eigenschappen in te stellen die MSBuild gebruikt om uw project te bouwen. U kunt bijvoorbeeld de naam van het Dockerfile wijzigen, tags en labels voor uw installatiekopieën opgeven, aanvullende argumenten opgeven die worden doorgegeven aan Docker-opdrachten en bepalen of Visual Studio bepaalde prestatieoptimalisaties uitvoert, zoals het bouwen buiten de containeromgeving. U kunt ook eigenschappen voor foutopsporing instellen, zoals de naam van het uitvoerbare bestand dat moet worden gestart en de opdrachtregelargumenten die moeten worden opgegeven.

Als u de waarde van een eigenschap wilt instellen, bewerkt u het projectbestand. Stel dat uw Dockerfile MyDockerfile heet. U kunt de DockerfilePath eigenschap in het projectbestand als volgt instellen.

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

Opmerking

De eigenschap DockerfilePath vervangt de afgeschafte eigenschap DockerfileFile, die nog steeds wordt ondersteund in de huidige versie van Visual Studio.

Als u de waarde van een eigenschap wilt instellen, bewerkt u het projectbestand. Stel dat uw Dockerfile MyDockerfile heet. U kunt de DockerfileFile eigenschap in het projectbestand als volgt instellen.

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

U kunt de eigenschapsinstelling toevoegen aan een bestaand PropertyGroup element of als er geen element is, een nieuw PropertyGroup element maken.

Eigenschappen voor .NET SDK-projecten

In deze sectie worden de MSBuild-eigenschappen beschreven die van toepassing zijn wanneer u het buildtype van de .NET SDK-container kiest.

Er is slechts één eigenschap, EnableSdkContainerDebuggingin het projectbestand dat nodig is voor in containers geplaatste .NET SDK-projecten. Deze moet worden ingesteld op True .NET SDK-projecten om foutopsporing in te schakelen.

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

Eigenschappen voor Dockerfile-projecten

In deze sectie worden de MSBuild-eigenschappen beschreven die van toepassing zijn wanneer u het buildtype Dockerfile-container kiest.

In de volgende tabel ziet u de MSBuild-eigenschappen die beschikbaar zijn voor Dockerfile-projecten. De NuGet-pakketversie is van toepassing op Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Naam van de eigenschap Description Standaardwaarde NuGet-pakketversie
ContainerDevelopmentMode Hiermee bepaalt u of 'build-on-host'-optimalisatie ('Fast Mode'-foutopsporing) is ingeschakeld. Toegestane waarden zijn Snel en Normaal. Snel 1.0.1872750 of hoger
ContainerVsDbgPath Het pad voor het foutopsporingsprogramma van VSDBG. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 of hoger
DockerDebuggeeArguments Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om deze argumenten door te geven aan het gestarte uitvoerbare bestand. Niet van toepassing op ASP.NET .NET Framework-projecten 1.7.8 of hoger
DockerDebuggeeProgram Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om dit uitvoerbare bestand te starten. Voor .NET Core- en .NET 5- en latere projecten: dotnet, ASP.NET .NET Framework-projecten: Niet van toepassing (Internet Information Services (IIS) wordt altijd gebruikt) 1.7.8 of hoger
DockerDebuggeeKillProgram Deze opdracht wordt gebruikt om het actieve proces in een container te beëindigen. Niet van toepassing op ASP.NET .NET Framework-projecten 1.7.8 of hoger
DockerDebuggeeWorkingDirectory Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om dit pad te gebruiken als de werkmap. C:\app (Windows) of /app (Linux) 1.7.8 of hoger
DockerDefaultTargetOS Het standaardbesturingssysteem dat wordt gebruikt bij het bouwen van de Docker-installatiekopieën. Ingesteld door Visual Studio. 1.0.1985401 of hoger
DockerImageLabels De standaardset labels die zijn toegepast op de Docker-installatiekopieën. com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 of hoger
DockerFastModeProjectMountDirectory In de snelle modus bepaalt deze eigenschap waar de uitvoermap van het project volume is gekoppeld aan de actieve container. C:\app (Windows) of /app (Linux) 1.9.2 of hoger
DockerfileBuildArguments Aanvullende argumenten die worden doorgegeven aan de opdracht Docker-build . Niet van toepassing. 1.0.1872750 of hoger
DockerfileContext De standaardcontext die wordt gebruikt bij het bouwen van de Docker-installatiekopieën, als pad ten opzichte van het Dockerfile. Ingesteld door Visual Studio wanneer Docker-ondersteuning wordt toegevoegd aan een project. Stel in .NET Framework-projecten in op ''. (de projectmap) en in .NET Core- en .NET 5- en latere projecten is deze ingesteld op het relatieve pad naar de oplossingsmap (meestal '..'). 1.0.1872750 of hoger
DockerfileFastModeStage De Dockerfile-fase (dat wil gezegd doel) die moet worden gebruikt bij het bouwen van de installatiekopieën in de foutopsporingsmodus. Eerste fase gevonden in het Dockerfile (meestal basis) -
DockerfileFile Beschrijft het standaard Dockerfile dat moet worden gebruikt om de container voor het project te bouwen/uit te voeren. Deze waarde kan een pad zijn. Dockerfile 1.0.1872750 of hoger
DockerfileRunArguments Aanvullende argumenten die worden doorgegeven aan de opdracht Docker-run . Niet van toepassing. 1.0.1872750 of hoger
DockerfileRunEnvironmentFiles Door puntkomma's gescheiden lijst met omgevingsbestanden die zijn toegepast tijdens de uitvoering van Docker. Niet van toepassing. 1.0.1872750 of hoger
DockerfileTag De tag die moet worden gebruikt bij het bouwen van de Docker-installatiekopieën. Bij foutopsporing wordt een ':d ev' toegevoegd aan de tag. Assemblynaam na het strippen van niet-alphanumeric tekens met de volgende regels:
Als de resulterende tag numeriek is, wordt 'afbeelding' ingevoegd als voorvoegsel (bijvoorbeeld afbeelding2314)
Als de resulterende tag een lege tekenreeks is, wordt 'afbeelding' gebruikt als de tag.
1.0.1872750 of hoger

In de volgende tabel ziet u de MSBuild-eigenschappen die beschikbaar zijn voor Dockerfile-projecten. De NuGet-pakketversie is van toepassing op Microsoft.VisualStudio.Azure.Containers.Tools.Targets.

Sommige eigenschappen en itemlijsten in de volgende tabel zijn gelijkwaardige vervangingen voor verouderde eigenschappen. In dat geval wordt ook de verouderde eigenschap genoemd die wordt vervangen. We raden u aan projecten bij te werken om de momenteel ondersteunde eigenschappen te gebruiken. Ondersteuning voor verouderde eigenschappen kan worden verwijderd in een toekomstige update van Visual Studio.

Sommige eigenschappen die als verouderd worden vermeld, worden vervangen door equivalente waarden in launchsettings.jsonen één wordt vervangen door msBuild-itemlijst.

Naam van de eigenschap Description Standaardwaarde Minimale NuGet-pakketversie
ContainerDevelopmentMode Hiermee bepaalt u of 'build-on-host'-optimalisatie ('Fast Mode'-foutopsporing) is ingeschakeld. Toegestane waarden zijn Snel en Normaal. Snel 1.0.1872750
ContainerVsDbgPath Het pad voor het foutopsporingsprogramma van VSDBG. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401
ContainerLabel

(vervangt DockerImageLabels)
De standaardset labels die zijn toegepast op de Docker-installatiekopieën.

ContainerLabel is een MSBuild-itemlijst, geen eigenschap.
com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.23.0 voor ContainerLabel

1.5.4 voor DockerImageLabels
ContainerFastModeProjectMountDirectory

(vervangt DockerFastModeProjectMountDirectory)
In de snelle modus bepaalt deze eigenschap waar de uitvoermap van het project volume is gekoppeld aan de actieve container. C:\app (Windows) of /app (Linux) 1.23.0 voor ContainerFastModeProjectMountDirectory

1.9.2 voor DockerFastModeProjectMountDirectory
ContainerBuildArguments

(vervangt DockerfileBuildArguments)
Aanvullende argumenten die worden doorgegeven aan de opdracht containerbuild. Zie Docker-build of podman-build. Niet van toepassing. 1.23.0 voor ContainerBuildArguements

1.0.1872750 voor DockerfileBuildArguments
ContainerBuildContext

(vervangt DockerfileContext)
De standaardcontext die wordt gebruikt bij het bouwen van de Docker-installatiekopieën, als pad ten opzichte van het Dockerfile. Ingesteld door Visual Studio wanneer Docker-ondersteuning wordt toegevoegd aan een project. Deze is ingesteld op het relatieve pad naar de oplossingsmap (meestal '..'). 1.23.0 voor ContainerBuildContext

1.0.1872750 voor DockerfileContext
ContainerFastModeStage

(vervangt DockerfileFastModeStage)
De Dockerfile-fase (dat wil gezegd doel) die moet worden gebruikt bij het bouwen van de installatiekopieën in de foutopsporingsmodus. Eerste fase gevonden in het Dockerfile (meestal basis) -
ContainerIncludeDefaultImageLabels (vervangt: DockerIncludeDefaultImageLabels) Als deze optie is ingesteld false, worden geen standaardafbeeldingstags com.microsoft.created-by=visual-studio en com.microsoft.visual-studio.project-name=$(MSBuildProjectName). Klopt 1.23.0 voor ContainerIncludeDefaultImageLabels
ContainerLabelBuiltImages (vervangt DockerLabelBuiltImages) Labels opnemen op ingebouwde afbeeldingen. Als dit onwaar is, worden er geen labels toegevoegd, inclusief door de gebruiker gedefinieerde labels. Klopt 1.23.0 voor ContainerLabelBuiltImages
DockerfilePath

(vervangt DockerfileFile)
Beschrijft het standaard Dockerfile dat moet worden gebruikt om de container voor het project te bouwen/uit te voeren. Dockerfile 1.23.0 voor DockerfilePath

1.0.1872750 voor DockerfileFile
ContainerRepository

(vervangt DockerRepository)
De opslagplaats die moet worden gebruikt in het label, bijvoorbeeld webapplication1 in het label webapplication1:dev. De assemblynaam. 1.23.0 voor ContainerRepository
ContainerImageTag of ContainerImageTags

(vervangt DockerfileTag)
De tag die moet worden gebruikt bij het bouwen van de installatiekopieën. Bij foutopsporing wordt een ':d ev' toegevoegd aan de tag. Assemblynaam na het strippen van niet-alphanumeric tekens met de volgende regels:
Als de resulterende tag numeriek is, wordt 'afbeelding' ingevoegd als voorvoegsel (bijvoorbeeld afbeelding2314)
Als de resulterende tag een lege tekenreeks is, wordt 'afbeelding' gebruikt als de tag.
1.23.0 voor ContainerImageTag, ContainerImageTags

1.0.1872750 voor DockerfileTag.
DockerDebuggeeArguments

(verouderd, gebruik commandLineArgs in launchsettings.json)
Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om deze argumenten door te geven aan het gestarte uitvoerbare bestand. - 1.7.8
DockerDebuggeeProgram

(verouderd, gebruik executablePath in launchsettings.json)
Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om dit uitvoerbare bestand te starten. - 1.7.8
DockerDebuggeeKillProgram Deze opdracht wordt gebruikt om het actieve proces in een container te beëindigen. - 1.7.8
DockerDebuggeeWorkingDirectory

(verouderd; gebruik workingDirectory in launchsettings.json)
Bij foutopsporing wordt het foutopsporingsprogramma geïnstrueerd om dit pad te gebruiken als de werkmap. C:\app (Windows) of /app (Linux) 1.7.8
DockerDefaultTargetOS Het standaardbesturingssysteem dat wordt gebruikt bij het bouwen van de Docker-installatiekopieën. Ingesteld door Visual Studio. 1.0.1985401
DockerfileRunArguments

(verouderd, gebruik containerRunArguments in launchsettings.json)
Aanvullende argumenten die worden doorgegeven aan de opdracht Docker-run . Niet van toepassing. 1.0.1872750
DockerfileRunEnvironmentFiles

(verouderd, gebruik containerRunEnvironmentFiles in launchsettings.json)
Door puntkomma's gescheiden lijst met omgevingsbestanden die zijn toegepast tijdens de uitvoering van Docker. Niet van toepassing. 1.0.1872750

ContainerRepository en ContainerImageTag (of ContainerImageTags) bieden de mogelijkheid om de twee delen van een afbeeldingslabel, de opslagplaats en een of meer tags (bijvoorbeeld webapp1:alpha) op te geven. In eerdere versies van Visual Studio kunt u de DockerfileTag eigenschap gebruiken om de opslagplaats en één tag op te geven, maar dit had beperkingen, bijvoorbeeld, er was geen mogelijkheid om meerdere tags op te geven. De eigenschap DockerfileTag is verouderd; projecten moeten nu worden gebruikt ContainerRepository en ContainerImageTag, en de huidige versie ondersteunt ContainerImageTags ook voor meerdere tags.

In eerdere Versies van Visual Studio was <DockerfileTag>webapp1:alpha</DockerfileTag>de syntaxis . Het huidige equivalent is <ContainerRepository>webapp1</ContainerRespository> en <ContainerImageTag>alpha</ContainerImageTag>, of <ContainerImageTags>alpha;latest</ContainerImageTags> als u meerdere tags wilt.

Example

In het volgende projectbestand ziet u voorbeelden van enkele van deze instellingen.

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

Opmerking

De buildcontext, die u kunt instellen door een waarde op te geven voor ContainerBuildContext (of DockerfileContext), verschilt meestal in Visual Studio voor projecten van wat docker build (of podman build) wordt gebruikt wanneer u deze uitvoert vanaf de opdrachtregel. Het vertrek van het gedrag van de build-opdrachtregel is nodig om ervoor te zorgen dat buildartefacten op oplossingsniveau kunnen worden opgenomen.

Wanneer u aanroept docker build (of podman build), geeft u altijd een buildcontext op en kunt u desgewenst een pad naar het Dockerfile opgeven. De standaardinstelling is dat het Dockerfile zich in de hoofdmap van de context bevindt, maar u kunt de -f vlag gebruiken om een alternatieve locatie op te geven. U kunt bijvoorbeeld bouwen met docker build -f Dockerfile .. behulp van de projectmap of docker build -f ProjectName/Dockerfile . vanuit de oplossingsmap.

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

Opmerking

De Docker-context, die u kunt instellen door een waarde op te geven voor DockerfileContext, is meestal anders in Visual Studio voor projecten die gericht zijn op .NET Core (inclusief .NET 5 en hoger) van wat docker build er wordt gebruikt wanneer u deze uitvoert vanaf de opdrachtregel. Het vertrek van het gedrag van docker build is nodig om ervoor te zorgen dat buildartefacten op oplossingsniveau kunnen worden opgenomen.

Wanneer u aanroept docker build, geeft u altijd een buildcontext op en kunt u desgewenst een pad naar het Dockerfile opgeven. De standaardinstelling is dat het Dockerfile zich in de hoofdmap van de context bevindt, maar u kunt de -f vlag gebruiken om een alternatieve locatie op te geven. U kunt bijvoorbeeld bouwen met docker build -f Dockerfile .. behulp van de projectmap of docker build -f ProjectName/Dockerfile . vanuit de oplossingsmap.

Volgende stappen

Zie MSBuild Properties voor informatie over MSBuild-eigenschappen in het algemeen.

Zie ook

Build-eigenschappen van Docker Compose

Startinstellingen voor Container Tools

gereserveerde en bekende eigenschappen van MSBuild