Aracılığıyla paylaş


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 DockerfilePath aşağıdaki gibi ayarlayabilirsiniz.

<PropertyGroup>
   <DockerfilePath>MyDockerfile</DockerfilePath>
</PropertyGroup>

Uyarı

özelliği DockerfilePath , Visual Studio'nun geçerli sürümünde hala desteklenen kullanım dışı özelliğinin DockerfileFileyerini alır.

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ı Description Varsayılan değer 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 (Internet Information Services (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

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.

Aşağıdaki tabloda yer alan özelliklerden ve öğe listelerinden bazıları, eski özellikler için eşdeğer değiştirmelerdir. Bu durumda, değiştirdiğini eski özelliği de adlandırılır. Projeleri şu anda desteklenen özellikleri kullanacak şekilde güncelleştirmenizi öneririz. Visual Studio'nun gelecekteki bir güncelleştirmesinde eski özelliklere yönelik destek kaldırılabilir.

Eski olarak listelenen bazı özellikler ,launchsettings.jsoniçindeki eşdeğer değerlerle değiştirilir ve biri MSBuild öğe listesiyle değiştirilir.

Özellik adı Description Varsayılan değer En düşük 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
ContainerVsDbgPath VSDBG hata ayıklayıcısının yolu. %USERPROFILE%\vsdbg\vs2017u5 1.0.1985401
ContainerLabel

(değiştirir DockerImageLabels)
Docker görüntüsüne uygulanan varsayılan etiket kümesi.

ContainerLabel bir özellik değil, bir MSBuild öğe listesidir.
com.microsoft.created-by=visual-studio;com.microsoft.visual-studio.project-name=$(MSBuildProjectName) 1.23.0 için ContainerLabel

1.5.4 için DockerImageLabels
ContainerFastModeProjectMountDirectory

(değiştirir 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.23.0 için ContainerFastModeProjectMountDirectory

1.9.2 için DockerFastModeProjectMountDirectory
ContainerBuildArguments

(değiştirir DockerfileBuildArguments)
Kapsayıcı derleme komutuna geçirilen ek bağımsız değişkenler. Bkz. Docker derlemesi veya podman derlemesi. Uygulanamaz. 1.23.0 için ContainerBuildArguements

1.0.1872750 için DockerfileBuildArguments
ContainerBuildContext

(değiştirir 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. Çözüm klasörünün göreli yoluna (genellikle "..") ayarlanır. 1.23.0 için ContainerBuildContext

1.0.1872750 için DockerfileContext
ContainerFastModeStage

(değiştirir 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) -
ContainerIncludeDefaultImageLabels (şunu değiştirir: DockerIncludeDefaultImageLabels) olarak ayarlanırsa false, varsayılan görüntü etiketlerini com.microsoft.created-by=visual-studio ve com.microsoft.visual-studio.project-name=$(MSBuildProjectName)içermez. Doğru 1.23.0 için ContainerIncludeDefaultImageLabels
ContainerLabelBuiltImages (değiştirir DockerLabelBuiltImages) Yerleşik görüntülere etiket ekleyin. False ise, kullanıcı tanımlı etiketler de dahil olmak üzere hiçbir etiket eklenmez. Doğru 1.23.0 için ContainerLabelBuiltImages
DockerfilePath

(değiştirir DockerfileFile)
Projenin kapsayıcısını derlemek/çalıştırmak için kullanılacak varsayılan Dockerfile'ı açıklar. Dockerfile 1.23.0 için DockerfilePath

1.0.1872750 için DockerfileFile
ContainerRepository

(değiştirir DockerRepository)
Etikette, örneğin webapplication1 etiketinde webapplication1:devkullanılacak depo. Derleme adı. 1.23.0 için ContainerRepository
ContainerImageTag veya ContainerImageTags

(değiştirir DockerfileTag)
Görüntüyü 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.
için ContainerImageTag1.23.0 ContainerImageTags

için DockerfileTag1.0.1872750.
DockerDebuggeeArguments

(eski, launchsettings.jsoniçinde kullanıncommandLineArgs)
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. - 1.7.8
DockerDebuggeeProgram

(eski, launchsettings.jsoniçinde kullanınexecutablePath)
Hata ayıklarken, hata ayıklayıcıya bu yürütülebilir dosyayı başlatması istenir. - 1.7.8
DockerDebuggeeKillProgram Bu komut, bir kapsayıcıda çalışan işlemi sonlandırmak için kullanılır. - 1.7.8
DockerDebuggeeWorkingDirectory

(eski; launchsettings.jsoniçinde kullanınworkingDirectory)
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
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
DockerfileRunArguments

(eski, launchsettings.jsoniçinde kullanıncontainerRunArguments)
Docker çalıştırma komutuna geçirilen ek bağımsız değişkenler. Uygulanamaz. 1.0.1872750
DockerfileRunEnvironmentFiles

(eski, launchsettings.jsoniçinde kullanıncontainerRunEnvironmentFiles)
Docker çalıştırması sırasında uygulanan ortam dosyalarının noktalı virgülle ayrılmış listesi. Uygulanamaz. 1.0.1872750

ContainerRepository ve ContainerImageTag (veya ContainerImageTags) bir görüntü etiketinin iki bölümünü, depoyu ve bir veya daha fazla etiketi (örneğin, webapp1:alpha) belirtme olanağı sağlar. Visual Studio'nun önceki sürümlerinde, depoyu ve tek bir etiketi belirtmek için özelliğini kullanabilirsiniz DockerfileTag , ancak bunun sınırlamaları vardı, örneğin, birden çok etiket belirtme özelliği yoktu. özelliği DockerfileTag kullanımdan kaldırıldı; projeler artık ve ContainerImageTagkullanmalıdır ContainerRepository ve geçerli sürüm de birden çok etiketi desteklerContainerImageTags.

Önceki Visual Studio sürümlerinde söz dizimi şeklindeydi <DockerfileTag>webapp1:alpha</DockerfileTag>. Geçerli eşdeğer ve <ContainerRepository>webapp1</ContainerRespository><ContainerImageTag>alpha</ContainerImageTag>veya <ContainerImageTags>alpha;latest</ContainerImageTags> birden çok etiket istiyorsanız olur.

Example

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

Uyarı

(veya DockerfileContext) için ContainerBuildContext bir değer sağlayarak ayarlayabileceğiniz derleme bağlamı genellikle Visual Studio'da projelerde komut satırından docker build çalıştırdığınızda (veya podman build) tarafından kullanılandan farklıdır. Derleme yapıtlarının çözüm düzeyinde eklenebilmesi için derleme komut satırının davranışından ayrılması gerekir.

(veyapodman build) öğesini çağırdığınızda docker build her 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.

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

Uyarı

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 bakınız

Docker Compose derleme özellikleri

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

MSBuild ayrılmış ve iyi bilinen özellikleri