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 EnableSdkContainerDebugging
vardı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 (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 |
Ö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 DockerfileContext
sağ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 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.
Sonraki adımlar
MSBuild özellikleri hakkında genel bilgi için bkz . MSBuild Özellikleri.
Ayrıca bkz.
Docker Compose derleme özellikleri