Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 ContainerLabel1.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 ContainerFastModeProjectMountDirectory1.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 ContainerBuildArguements1.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 ContainerBuildContext1.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 DockerfilePath1.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 ContainerImageTagsiçin DockerfileTag1.0.1872750. |
DockerDebuggeeArguments(eski, launchsettings.jsoniçinde kullanın commandLineArgs) |
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ın executablePath) |
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ın workingDirectory) |
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ın containerRunArguments) |
Docker çalıştırma komutuna geçirilen ek bağımsız değişkenler. | Uygulanamaz. | 1.0.1872750 |
DockerfileRunEnvironmentFiles(eski, launchsettings.jsoniçinde kullanın containerRunEnvironmentFiles) |
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