Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menyesuaikan cara Visual Studio membangun proyek kontainer Anda dengan mengatur properti yang digunakan MSBuild untuk membangun proyek Anda. Misalnya, Anda dapat mengubah nama Dockerfile, menentukan tag dan label untuk gambar Anda, memberikan argumen tambahan yang diteruskan ke perintah Docker, dan mengontrol apakah Visual Studio melakukan pengoptimalan performa tertentu seperti membangun di luar lingkungan kontainer. Anda juga dapat mengatur properti penelusuran kesalahan seperti nama yang dapat dieksekusi untuk diluncurkan, dan argumen baris perintah yang akan disediakan.
Untuk mengatur nilai properti, edit file proyek. Misalnya, Dockerfile Anda diberi nama MyDockerfile. Anda dapat mengatur DockerfilePath properti dalam file proyek sebagai berikut.
<PropertyGroup>
<DockerfilePath>MyDockerfile</DockerfilePath>
</PropertyGroup>
Nota
Properti DockerfilePath menggantikan properti DockerfileFileyang tidak digunakan lagi , yang masih didukung dalam versi Visual Studio saat ini.
Untuk mengatur nilai properti, edit file proyek. Misalnya, Dockerfile Anda diberi nama MyDockerfile. Anda dapat mengatur DockerfileFile properti dalam file proyek sebagai berikut.
<PropertyGroup>
<DockerfileFile>MyDockerfile</DockerfileFile>
</PropertyGroup>
Anda dapat menambahkan pengaturan properti ke elemen yang sudah ada PropertyGroup , atau jika tidak ada, buat elemen baru PropertyGroup .
Properti untuk proyek .NET SDK
Bagian ini menjelaskan properti MSBuild yang berlaku saat Anda memilih jenis build kontainer .NET SDK.
Hanya ada satu properti, EnableSdkContainerDebugging, dalam file proyek yang diperlukan untuk proyek kontainer .NET SDK. Ini harus diatur ke True untuk proyek .NET SDK untuk mengaktifkan penelusuran kesalahan.
<PropertyGroup>
<EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
</PropertyGroup>
Properti untuk proyek Dockerfile
Bagian ini menjelaskan properti MSBuild yang berlaku saat Anda memilih jenis build kontainer Dockerfile.
Tabel berikut ini memperlihatkan properti MSBuild yang tersedia untuk proyek Dockerfile. Versi paket NuGet berlaku untuk Microsoft.VisualStudio.Azure.Containers.Tools.Targets.
| Nama properti | Description | Nilai standar | Versi paket NuGet |
|---|---|---|---|
| ContainerDevelopmentMode | Mengontrol apakah pengoptimalan "build-on-host" (debugging "Mode Cepat" diaktifkan. Nilai yang diizinkan cepat dan Teratur. | Cepat | 1.0.1872750 atau yang lebih baru |
| ContainerVsDbgPath | Jalur untuk debugger VSDBG. | %USERPROFILE%\vsdbg\vs2017u5 |
1.0.1985401 atau yang lebih baru |
| DockerDebuggeeArguments | Saat penelusuran kesalahan, debugger diinstruksikan untuk meneruskan argumen ini ke executable yang diluncurkan. | Tidak berlaku untuk proyek .NET Framework ASP.NET | 1.7.8 atau yang lebih baru |
| DockerDebuggeeProgram | Saat penelusuran kesalahan, debugger diinstruksikan untuk meluncurkan executable ini. | Untuk proyek .NET Core dan .NET 5 dan yang lebih baru: dotnet, ASP.NET proyek .NET Framework: Tidak berlaku (Internet Information Services (IIS) selalu digunakan) | 1.7.8 atau yang lebih baru |
| DockerDebuggeeKillProgram | Perintah ini digunakan untuk mematikan proses yang sedang berjalan dalam kontainer. | Tidak berlaku untuk proyek .NET Framework ASP.NET | 1.7.8 atau yang lebih baru |
| DockerDebuggeeWorkingDirectory | Saat penelusuran kesalahan, debugger diinstruksikan untuk menggunakan jalur ini sebagai direktori kerja. | C:\app (Windows) atau /app (Linux) | 1.7.8 atau yang lebih baru |
| DockerDefaultTargetOS | Sistem operasi target default yang digunakan saat membangun gambar Docker. | Diatur oleh Visual Studio. | 1.0.1985401 atau yang lebih baru |
| DockerImageLabels | Kumpulan label default yang diterapkan ke gambar Docker. | com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) | 1.5.4 atau yang lebih baru |
| DockerFastModeProjectMountDirectory | Dalam Mode Cepat, properti ini mengontrol tempat direktori output proyek dipasang volume ke dalam kontainer yang sedang berjalan. | C:\app (Windows) atau /app (Linux) | 1.9.2 atau yang lebih baru |
| DockerfileBuildArguments | Argumen tambahan diteruskan ke perintah build Docker . | Tidak dapat diterapkan. | 1.0.1872750 atau yang lebih baru |
| DockerfileContext | Konteks default yang digunakan saat membangun gambar Docker, sebagai jalur relatif terhadap Dockerfile. | Diatur oleh Visual Studio saat dukungan Docker ditambahkan ke proyek. Dalam proyek .NET Framework, atur ke "." (folder proyek), dan dalam proyek .NET Core dan .NET 5 dan yang lebih baru, folder tersebut diatur ke jalur relatif ke folder solusi (biasanya ".."). | 1.0.1872750 atau yang lebih baru |
| DockerfileFastModeStage | Tahap Dockerfile (yaitu target) yang akan digunakan saat membangun gambar dalam mode debug. | Tahap pertama ditemukan di Dockerfile (biasanya dasar) | - |
| DockerfileFile | Menjelaskan Dockerfile default yang akan digunakan untuk membangun/menjalankan kontainer untuk proyek. Nilai ini bisa menjadi jalur. | Dockerfile | 1.0.1872750 atau yang lebih baru |
| DockerfileRunArguments | Argumen tambahan diteruskan ke perintah jalankan Docker . | Tidak dapat diterapkan. | 1.0.1872750 atau yang lebih baru |
| DockerfileRunEnvironmentFiles | Daftar file lingkungan yang dibatasi titik koma yang diterapkan selama eksekusi Docker. | Tidak dapat diterapkan. | 1.0.1872750 atau yang lebih baru |
| DockerfileTag | Tag yang digunakan saat membuat gambar Docker. Dalam penelusuran kesalahan, ":d ev" ditambahkan ke tag. | Nama assembly setelah menghapus karakter nonalphanumeric dengan aturan berikut: Jika tag yang dihasilkan adalah semua numerik, maka "gambar" dimasukkan sebagai awalan (misalnya, gambar2314) Jika tag yang dihasilkan adalah string kosong, maka "gambar" digunakan sebagai tag. |
1.0.1872750 atau yang lebih baru |
Tabel berikut ini memperlihatkan properti MSBuild yang tersedia untuk proyek Dockerfile. Versi paket NuGet berlaku untuk Microsoft.VisualStudio.Azure.Containers.Tools.Targets.
Beberapa properti dan daftar item dalam tabel berikut ini adalah pengganti yang setara untuk properti usang. Dalam hal ini, properti usang yang digantinya juga dinamai. Sebaiknya perbarui proyek untuk menggunakan properti yang saat ini didukung. Dukungan untuk properti usang mungkin dihapus dalam pembaruan Visual Studio di masa mendatang.
Beberapa properti yang tercantum sebagai usang digantikan oleh nilai yang setara dalam launchsettings.json, dan satu digantikan oleh daftar item MSBuild.
| Nama properti | Description | Nilai standar | Versi paket NuGet minimum |
|---|---|---|---|
ContainerDevelopmentMode |
Mengontrol apakah pengoptimalan "build-on-host" (debugging "Mode Cepat" diaktifkan. Nilai yang diizinkan cepat dan Teratur. | Cepat | 1.0.1872750 |
ContainerVsDbgPath |
Jalur untuk debugger VSDBG. | %USERPROFILE%\vsdbg\vs2017u5 |
1.0.1985401 |
ContainerLabel(menggantikan DockerImageLabels) |
Kumpulan label default yang diterapkan ke gambar Docker.ContainerLabel adalah daftar item MSBuild, bukan properti. |
com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) |
1.23.0 untuk ContainerLabel1.5.4 untuk DockerImageLabels |
ContainerFastModeProjectMountDirectory(menggantikan DockerFastModeProjectMountDirectory) |
Dalam Mode Cepat, properti ini mengontrol tempat direktori output proyek dipasang volume ke dalam kontainer yang sedang berjalan. | C:\app (Windows) atau /app (Linux) | 1.23.0 untuk ContainerFastModeProjectMountDirectory1.9.2 untuk DockerFastModeProjectMountDirectory |
ContainerBuildArguments(menggantikan DockerfileBuildArguments) |
Argumen tambahan diteruskan ke perintah build kontainer. Lihat Build Docker atau build podman. | Tidak dapat diterapkan. | 1.23.0 untuk ContainerBuildArguements1.0.1872750 untuk DockerfileBuildArguments |
ContainerBuildContext(menggantikan DockerfileContext) |
Konteks default yang digunakan saat membangun gambar Docker, sebagai jalur relatif terhadap Dockerfile. | Diatur oleh Visual Studio saat dukungan Docker ditambahkan ke proyek. Ini diatur ke jalur relatif ke folder solusi (biasanya ".."). | 1.23.0 untuk ContainerBuildContext1.0.1872750 untuk DockerfileContext |
ContainerFastModeStage(menggantikan DockerfileFastModeStage) |
Tahap Dockerfile (yaitu target) yang akan digunakan saat membangun gambar dalam mode debug. | Tahap pertama ditemukan di Dockerfile (biasanya dasar) | - |
ContainerIncludeDefaultImageLabels (menggantikan: DockerIncludeDefaultImageLabels) |
Jika diatur ke false, tidak menyertakan tag com.microsoft.created-by=visual-studio gambar default dan com.microsoft.visual-studio.project-name=$(MSBuildProjectName). |
Benar | 1.23.0 untuk ContainerIncludeDefaultImageLabels |
ContainerLabelBuiltImages (menggantikan DockerLabelBuiltImages) |
Sertakan label pada gambar bawaan. Jika false, tidak ada label yang ditambahkan, termasuk label yang ditentukan pengguna. | Benar | 1.23.0 untuk ContainerLabelBuiltImages |
DockerfilePath(menggantikan DockerfileFile) |
Menjelaskan Dockerfile default yang akan digunakan untuk membangun/menjalankan kontainer untuk proyek. | Dockerfile | 1.23.0 untuk DockerfilePath1.0.1872750 untuk DockerfileFile |
ContainerRepository(menggantikan DockerRepository) |
Repositori yang akan digunakan dalam label, misalnya webapplication1 di label webapplication1:dev. |
Nama assembly. | 1.23.0 untuk ContainerRepository |
ContainerImageTag atau ContainerImageTags(menggantikan DockerfileTag) |
Tag yang digunakan saat membangun gambar. Dalam penelusuran kesalahan, ":d ev" ditambahkan ke tag. | Nama assembly setelah menghapus karakter nonalphanumeric dengan aturan berikut: Jika tag yang dihasilkan adalah semua numerik, maka "gambar" dimasukkan sebagai awalan (misalnya, gambar2314) Jika tag yang dihasilkan adalah string kosong, maka "gambar" digunakan sebagai tag. |
1.23.0 untuk ContainerImageTag, ContainerImageTags1.0.1872750 untuk DockerfileTag. |
DockerDebuggeeArguments(usang, gunakan commandLineArgs dalam launchsettings.json) |
Saat penelusuran kesalahan, debugger diinstruksikan untuk meneruskan argumen ini ke executable yang diluncurkan. | - | 1.7.8 |
DockerDebuggeeProgram(usang, gunakan executablePath dalam launchsettings.json) |
Saat penelusuran kesalahan, debugger diinstruksikan untuk meluncurkan executable ini. | - | 1.7.8 |
DockerDebuggeeKillProgram |
Perintah ini digunakan untuk mematikan proses yang sedang berjalan dalam kontainer. | - | 1.7.8 |
DockerDebuggeeWorkingDirectory(usang; gunakan workingDirectory dalam launchsettings.json) |
Saat penelusuran kesalahan, debugger diinstruksikan untuk menggunakan jalur ini sebagai direktori kerja. | C:\app (Windows) atau /app (Linux) | 1.7.8 |
| DockerDefaultTargetOS | Sistem operasi target default yang digunakan saat membangun gambar Docker. | Diatur oleh Visual Studio. | 1.0.1985401 |
DockerfileRunArguments(usang, gunakan containerRunArguments dalam launchsettings.json) |
Argumen tambahan diteruskan ke perintah jalankan Docker . | Tidak dapat diterapkan. | 1.0.1872750 |
DockerfileRunEnvironmentFiles(usang, gunakan containerRunEnvironmentFiles dalam launchsettings.json) |
Daftar file lingkungan yang dibatasi titik koma yang diterapkan selama eksekusi Docker. | Tidak dapat diterapkan. | 1.0.1872750 |
ContainerRepository dan ContainerImageTag (atau ContainerImageTags) menyediakan kemampuan untuk menentukan dua bagian label gambar, repositori dan satu atau beberapa tag (misalnya, webapp1:alpha). Di versi Visual Studio sebelumnya, Anda dapat menggunakan DockerfileTag properti untuk menentukan repositori dan satu tag, tetapi ini memiliki batasan, misalnya, tidak ada kemampuan untuk menentukan beberapa tag. Properti DockerfileTag usang; proyek sekarang harus menggunakan ContainerRepository dan ContainerImageTag, dan versi saat ini juga mendukung ContainerImageTags untuk beberapa tag.
Dalam versi Visual Studio sebelumnya, sintaksnya adalah <DockerfileTag>webapp1:alpha</DockerfileTag>. Yang setara saat ini adalah <ContainerRepository>webapp1</ContainerRespository> dan <ContainerImageTag>alpha</ContainerImageTag>, atau <ContainerImageTags>alpha;latest</ContainerImageTags> jika Anda menginginkan beberapa tag.
Example
File proyek berikut menunjukkan contoh beberapa pengaturan ini.
<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>
Nota
Konteks build, yang dapat Anda tetapkan dengan memberikan nilai untuk ContainerBuildContext (atau DockerfileContext), biasanya berbeda di Visual Studio untuk proyek dari apa yang docker build (atau podman build) gunakan saat Anda menjalankannya dari baris perintah. Keberangkatan dari perilaku baris perintah build diperlukan untuk memastikan bahwa artefak build pada tingkat solusi dapat disertakan.
Saat Anda memanggil docker build (atau podman build), Anda selalu menentukan konteks build, dan Anda dapat secara opsional menentukan jalur ke Dockerfile. Defaultnya adalah Dockerfile berada di akar konteks, tetapi Anda dapat menggunakan -f bendera untuk menentukan lokasi alternatif. Misalnya, Anda dapat membangun dari docker build -f Dockerfile .. direktori proyek, atau docker build -f ProjectName/Dockerfile . dari direktori solusi.
<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>
Nota
Konteks Docker, yang dapat Anda tetapkan dengan memberikan nilai untuk DockerfileContext, biasanya berbeda di Visual Studio untuk proyek yang menargetkan .NET Core (termasuk .NET 5 dan yang lebih baru) dari apa yang docker build digunakan saat Anda menjalankannya dari baris perintah. Keberangkatan dari docker build perilaku diperlukan untuk memastikan bahwa artefak build di tingkat solusi dapat disertakan.
Saat memanggil docker build, Anda selalu menentukan konteks build, dan Anda dapat secara opsional menentukan jalur ke Dockerfile. Defaultnya adalah Dockerfile berada di akar konteks, tetapi Anda dapat menggunakan -f bendera untuk menentukan lokasi alternatif. Misalnya, Anda dapat membangun dari docker build -f Dockerfile .. direktori proyek, atau docker build -f ProjectName/Dockerfile . dari direktori solusi.
Langkah selanjutnya
Untuk informasi tentang properti MSBuild umumnya, lihat Properti MSBuild.