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