Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 ContainerLabel1.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 ContainerFastModeProjectMountDirectory1.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 ContainerBuildArguements1.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 ContainerBuildContext1.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 DockerfilePath1.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, ContainerImageTags1.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