Bagikan melalui


Properti build Container Tools

Anda dapat menyesuaikan bagaimana 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 bernama MyDockerfile. Anda dapat mengatur properti DockerfileFile 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 Deskripsi Nilai default Versi paket NuGet
ContainerDevelopmentMode Mengontrol apakah pengoptimalan "build-on-host" (penelusuran kesalahan "Mode Cepat") diaktifkan. Nilai yang diizinkan adalah 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 men-debug, debugger diinstruksikan untuk meneruskan argumen ini ke executable yang diluncurkan. Tidak berlaku untuk proyek ASP.NET .NET Framework 1.7.8 atau yang lebih baru
DockerDebuggeeProgram Saat men-debug, debugger diinstruksikan untuk meluncurkan hal yang dapat dijalankan berikut. Untuk proyek .NET Core dan .NET 5 dan yang lebih baru: dotnet, ASP.NET proyek .NET Framework: Tidak berlaku (IIS selalu digunakan) 1.7.8 atau yang lebih baru
DockerDebuggeeKillProgram Perintah ini digunakan untuk menghentikan proses yang sedang berjalan dalam kontainer. Tidak berlaku untuk proyek ASP.NET .NET Framework 1.7.8 atau yang lebih baru
DockerDebuggeeWorkingDirectory Saat men-debug, 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 berlaku. 1.0.1872750 atau yang lebih baru
DockerfileContext Konteks default yang digunakan saat membangun gambar Docker, sebagai jalur yang 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 eksekusi Docker. Tidak berlaku. 1.0.1872750 atau yang lebih baru
DockerfileRunEnvironmentFiles Daftar file lingkungan yang dibatasi titik koma yang diterapkan selama eksekusi Docker. Tidak berlaku. 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

Contoh

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

Catatan

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 berikutnya

Untuk informasi tentang properti MSBuild umumnya, lihat Properti MSBuild.

Baca juga

Properti build Docker Compose

Pengaturan peluncuran Alat Kontainer

Properti yang dicadangkan dan terkenal MSBuild