Share via


Kapsayıcı Araçları derleme özellikleri

MSBuild'in projenizi derlemek için kullandığı özellikleri ayarlayarak Visual Studio'nın kapsayıcı projelerinizi nasıl derlediğini özelleştirebilirsiniz. Örneğin, Dockerfile'ın adını değiştirebilir, resimleriniz için etiketler ve etiketler belirtebilir, Docker komutlarına geçirilen ek bağımsız değişkenler sağlayabilir ve Visual Studio'nun kapsayıcı ortamının dışında oluşturma gibi belirli performans iyileştirmeleri yapıp yapmadığını denetleyebilirsiniz. Ayrıca başlatacak yürütülebilir dosyanın adı ve sağlanacak komut satırı bağımsız değişkenleri gibi hata ayıklama özelliklerini de ayarlayabilirsiniz.

Bir özelliğin değerini ayarlamak için proje dosyasını düzenleyin. Örneğin, Dockerfile'ınızın myDockerfile olarak adlandırılıyor olduğunu varsayalım. Proje dosyasında özelliğini DockerfileFile aşağıdaki gibi ayarlayabilirsiniz.

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

Özellik ayarını var olan PropertyGroup bir öğeye ekleyebilir veya yoksa yeni PropertyGroup bir öğe oluşturabilirsiniz.

.NET SDK projelerinin özellikleri

Bu bölümde, .NET SDK kapsayıcı derleme türünü seçtiğinizde uygulanan MSBuild özellikleri açıklanmaktadır.

Proje dosyasında .NET SDK kapsayıcılı projeleri için gereken tek bir özellik EnableSdkContainerDebuggingvardır. Hata ayıklamayı True etkinleştirmek için .NET SDK projeleri için olarak ayarlanmalıdır.

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

Dockerfile projelerinin özellikleri

Bu bölümde, Dockerfile kapsayıcı derleme türünü seçtiğinizde uygulanan MSBuild özellikleri açıklanmaktadır.

Aşağıdaki tabloda Dockerfile projeleri için kullanılabilen MSBuild özellikleri gösterilmektedir. NuGet paket sürümü Microsoft.VisualStudio.Azure.Containers.Tools.Targets için geçerlidir.

Özellik adı Açıklama Default value NuGet paket sürümü
ContainerDevelopmentMode "Ana bilgisayarda derleme" iyileştirmesi ("Hızlı Mod" hata ayıklama) özelliğinin etkinleştirilip etkinleştirilmediğini denetler. İzin verilen değerler Hızlı ve Normal'tir. Hızlı 1.0.1872750 veya üzeri
ContainerVsDbgPath VSDBG hata ayıklayıcısının yolu. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401 veya üzeri
DockerDebuggeeArguments Hata ayıklarken, hata ayıklayıcıya bu bağımsız değişkenleri başlatılan yürütülebilir dosyaya geçirmesi istenir. .NET Framework projelerine ASP.NET uygulanamaz 1.7.8 veya üzeri
DockerDebuggeeProgram Hata ayıklarken, hata ayıklayıcıya bu yürütülebilir dosyayı başlatması istenir. .NET Core ve .NET 5 ve üzeri projeler için: dotnet, ASP.NET .NET Framework projeleri: Uygulanamaz (IIS her zaman kullanılır) 1.7.8 veya üzeri
DockerDebuggeeKillProgram Bu komut, bir kapsayıcıda çalışan işlemi sonlandırmak için kullanılır. .NET Framework projelerine ASP.NET uygulanamaz 1.7.8 veya üzeri
DockerDebuggeeWorkingDirectory Hata ayıklarken, hata ayıklayıcıya bu yolu çalışma dizini olarak kullanması istenir. C:\app (Windows) veya /app (Linux) 1.7.8 veya üzeri
DockerDefaultTargetOS Docker görüntüsünü oluştururken kullanılan varsayılan hedef işletim sistemi. Visual Studio tarafından ayarlanır. 1.0.1985401 veya üzeri
DockerImageLabels Docker görüntüsüne uygulanan varsayılan etiket kümesi. com.microsoft.created-by=visual-studio; com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.5.4 veya üzeri
DockerFastModeProjectMountDirectory Hızlı Modda, bu özellik proje çıkış dizininin çalışan kapsayıcıya birim olarak nereye bağlandığını denetler. C:\app (Windows) veya /app (Linux) 1.9.2 veya üzeri
DockerfileBuildArguments Docker derleme komutuna geçirilen ek bağımsız değişkenler. Uygulanamaz. 1.0.1872750 veya üzeri
DockerfileContext Docker görüntüsü oluşturulurken, Dockerfile'a göre bir yol olarak kullanılan varsayılan bağlam. Projeye Docker desteği eklendiğinde Visual Studio tarafından ayarlanır. .NET Framework projelerinde "." olarak ayarlayın. (proje klasörü) ve .NET Core ve .NET 5 ve üzeri projelerde, çözüm klasörünün göreli yoluna (genellikle "..") ayarlanır. 1.0.1872750 veya üzeri
DockerfileFastModeStage Görüntüyü hata ayıklama modunda oluştururken kullanılacak Dockerfile aşaması (hedef). Dockerfile'da bulunan ilk aşama (genellikle temel)
DockerfileFile Projenin kapsayıcısını derlemek/çalıştırmak için kullanılacak varsayılan Dockerfile'ı açıklar. Bu değer bir yol olabilir. Dockerfile 1.0.1872750 veya üzeri
DockerfileRunArguments Docker çalıştırma komutuna geçirilen ek bağımsız değişkenler. Uygulanamaz. 1.0.1872750 veya üzeri
DockerfileRunEnvironmentFiles Docker çalıştırması sırasında uygulanan ortam dosyalarının noktalı virgülle ayrılmış listesi. Uygulanamaz. 1.0.1872750 veya üzeri
DockerfileTag Docker görüntüsünü oluştururken kullanılacak etiket. Hata ayıklamada etikete bir ":d ev" eklenir. Aşağıdaki kurallarla nonalfanumerik karakterlerin alınmasından sonra derleme adı:
Sonuç etiketinin tümü sayısalsa, ön ek olarak "görüntü" eklenir (örneğin, görüntü2314)
Sonuç etiketi boş bir dizeyse, etiket olarak "görüntü" kullanılır.
1.0.1872750 veya üzeri

Örnek

Aşağıdaki proje dosyasında bu ayarlardan bazılarının örnekleri gösterilmektedir.

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

Not

için bir değer DockerfileContextsağlayarak ayarlayabileceğiniz Docker bağlamı, .NET Core'u (.NET 5 ve üzeri dahil) hedefleyen projeler için Visual Studio'da genellikle komut satırından çalıştırdığınızda kullanılanlardan docker build farklıdır. Çözüm düzeyinde derleme yapıtlarının docker build dahil edilebilmesi için davranışından ayrılma gerekir.

çağırdığınızda docker buildher zaman bir derleme bağlamı belirtirsiniz ve isteğe bağlı olarak Dockerfile yolunu belirtebilirsiniz. Varsayılan değer, Dockerfile dosyasının bağlamın kökünde olmasıdır, ancak bayrağını -f kullanarak alternatif bir konum belirtebilirsiniz. Örneğin, ile docker build -f Dockerfile .. proje dizininden veya docker build -f ProjectName/Dockerfile . çözüm dizininden oluşturabilirsiniz.

Sonraki adımlar

MSBuild özellikleri hakkında genel bilgi için bkz . MSBuild Özellikleri.

Ayrıca bkz.

Docker Compose derleme özellikleri

Kapsayıcı Araçları başlatma ayarları

MSBuild ayrılmış ve iyi bilinen özellikler