Buildeigenschaften für Containertools

Sie können den Buildprozess für Ihre Containerprojekte in Visual Studio anpassen, indem Sie die Eigenschaften festlegen, die MSBuild zum Erstellen Ihres Projekts nutzt. Beispielsweise können Sie den Namen der Dockerfile ändern, Tags und Bezeichnungen für Ihre Images festlegen, zusätzliche an Docker-Befehle übergebene Argumente angeben und steuern, ob Visual Studio bestimmte Leistungsoptimierungen vornimmt, z. B. das Erstellen außerhalb der Containerumgebung. Sie können auch Debuggingeigenschaften wie den Namen der zu startenden ausführbaren Datei und die bereitzustellenden Befehlszeilenargumente festlegen.

Bearbeiten Sie die Projektdatei, um den Wert einer Eigenschaft festzulegen. Angenommen der Name Ihrer Dockerfile lautet MyDockerfile. Sie können die DockerfileFile-Eigenschaft dann wie folgt in der Projektdatei festlegen:

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

Sie können die Eigenschaftseinstellung einem vorhandenen PropertyGroup-Element hinzufügen oder ein neues PropertyGroup-Element erstellen, falls noch keines vorhanden ist.

Eigenschaften für .NET SDK-Projekte

In diesem Abschnitt werden die MSBuild-Eigenschaften beschrieben, die angewendet werden, wenn Sie den Buildtyp „.NET SDK-Container“ auswählen.

Die Projektdatei enthält nur eine Eigenschaft (EnableSdkContainerDebugging), die für containerisierte .NET SDK-Projekte erforderlich ist. Sie muss für .NET SDK-Projekte auf True festgelegt werden, um das Debuggen zu aktivieren.

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

Eigenschaften für Dockerfile-Projekte

In diesem Abschnitt werden die MSBuild-Eigenschaften beschrieben, die angewendet werden, wenn Sie den Buildtyp „Dockerfile-Container“ auswählen.

In der folgenden Tabelle werden die MSBuild-Eigenschaften aufgeführt, die für Docker-Projekte verfügbar sind. Die NuGet-Paketversion gilt fürMicrosoft.VisualStudio.Azure.Containers.Tools.Targets.

Name der Eigenschaft BESCHREIBUNG Standardwert NuGet-Paketversion
ContainerDevelopmentMode Steuert, ob die Optimierung „build-on-host“ (Debugging im schnellen Modus) aktiviert ist. Zulässige Werte sind: Fast (Schnell) und Regular (Normal). Fast 1.0.1872750 oder höher
ContainerVsDbgPath Der Pfad für den VSDBG-Debugger. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 oder höher
DockerDebuggeeArguments Beim Debuggen wird der Debugger angewiesen, diese Argumente an die gestartete ausführbare Datei zu übergeben. Nicht auf .NET Framework-Projekte in ASP.NET anwendbar. 1.7.8 oder höher
DockerDebuggeeProgram Beim Debuggen wird der Debugger aufgefordert, diese ausführbare Datei zu starten. Für .NET Core- und .NET 5- und höher-Projekte: dotnet, ASP.NET .NET Framework-Projekte: Nicht anwendbar (IIS wird immer verwendet) 1.7.8 oder höher
DockerDebuggeeKillProgram Dieser Befehl wird zum Beenden des in einem Container ausgeführten Prozess verwendet. Nicht auf .NET Framework-Projekte in ASP.NET anwendbar. 1.7.8 oder höher
DockerDebuggeeWorkingDirectory Beim Debuggen wird der Debugger angewiesen, diesen Pfad als Arbeitsverzeichnis zu verwenden. C:\app (Windows) oder /app (Linux). 1.7.8 oder höher
DockerDefaultTargetOS Das standardmäßige Zielbetriebssystem, das beim Erstellen des Docker-Images verwendet wird. Wird von Visual Studio festgelegt. 1.0.1985401 oder höher
DockerImageLabels Die Standardbezeichnungen, die auf das Docker-Image angewendet werden. com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 oder höher
DockerFastModeProjectMountDirectory Im schnellen Modus steuert diese Eigenschaft, wo das Volume des Projektausgabeverzeichnisses in den ausgeführten Container eingebunden wird. C:\app (Windows) oder /app (Linux). 1.9.2 oder höher
DockerfileBuildArguments Zusätzliche Argumente, die an den Befehl docker build übergeben werden. Nicht zutreffend. 1.0.1872750 oder höher
DockerfileContext Hierbei handelt es sich um den Standardkontext, der beim Erstellen des Docker-Images als Pfad verwendet wird und relativ zum Dockerfile ist. Wird von Visual Studio festgelegt, wenn die Docker-Unterstützung zu einem Projekt hinzugefügt wird. In .NET Framework-Projekten, die auf „.“ (den Projektordner) festgelegt sind, und in .NET Core- und .NET 5 und späteren Projekten wird dies auf den relativen Pfad zum Projektmappenordner festgelegt (normalerweise „..“). 1.0.1872750 oder höher
DockerfileFastModeStage Die Dockerfile-Phase (d. h. Ziel), die beim Erstellen des Images im Debugmodus verwendet werden soll. Die erste Phase, die in der Dockerfile (normalerweise Base) ermittelt wird
DockerfileFile Beschreibt die Dockerfile-Standarddatei, die zum Erstellen/Ausführen des Containers für das Projekt verwendet werden soll. Dieser Wert kann ein Pfad sein. Docker-Datei 1.0.1872750 oder höher
DockerfileRunArguments Zusätzliche Argumente, die an den Befehl docker run übergeben werden. Nicht zutreffend. 1.0.1872750 oder höher
DockerfileRunEnvironmentFiles Durch Semikolons getrennte Liste von Umgebungsdateien, die während der Docker-Ausführung angewendet werden. Nicht zutreffend. 1.0.1872750 oder höher
DockerfileTag Das Tag, das beim Erstellen des Docker-Images verwendet werden soll. Beim Debuggen wird „.dev“ an das Tag angehängt. Der Assemblyname, nachdem nicht alphanumerische Zeichen gemäß der folgenden Regeln entfernt wurden:
Wenn das resultierende Tag nur aus numerischen Zeichen besteht, wird „image“ als Präfix eingefügt (z. B. „image2314“).
Wenn das resultierende Tag eine leere Zeichenfolge ist, wird „image“ als Tag verwendet.
1.0.1872750 oder höher

Beispiel

Die folgende Projektdatei enthält Beispiele für einige dieser Einstellungen.

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

Hinweis

Der Docker-Kontext, den Sie durch Angabe eines Werts für DockerfileContext festlegen können, unterscheidet sich in Visual Studio für Projekte, die auf .NET Core (einschließlich .NET 5 und höher) ausgerichtet sind, in der Regel von dem, was docker build verwendet, wenn Sie es von der Befehlszeile aus ausführen. Die Abweichung vom Verhalten von docker build ist notwendig, um sicherzustellen, dass Buildartefakte auf der Projektmappenebene einbezogen werden können.

Wenn Sie docker build aufrufen, geben Sie immer einen Buildkontext an, und Sie können optional einen Pfad zur Dockerfile angeben. Standardmäßig befindet sich die Dockerfile im Stammverzeichnis des Kontexts, aber Sie können das Flag -f verwenden, um einen anderen Speicherort anzugeben. Sie können z. B. mit docker build -f Dockerfile .. aus dem Projektverzeichnis oder mit docker build -f ProjectName/Dockerfile . aus dem Projektmappenverzeichnis erstellen.

Nächste Schritte

Weitere allgemeine Informationen zu MSBuild-Eigenschaften finden Sie unter MSBuild-Eigenschaften.

Siehe auch

Buildeigenschaften von Docker Compose

Starteinstellungen für Containertools

Reservierte und bekannte Eigenschaften für MSBuild