Derleyici çıkışını denetleyen C# Derleyici Seçenekleri

Aşağıdaki seçenekler derleyici çıktısı oluşturmayı denetler.

MSBuild csc.exe Açıklama
DocumentationFile -doc: Açıklamalardan /// XML belge dosyası oluşturun.
OutputAssembly -out: Çıkış derleme dosyasını belirtin.
PlatformTarget -platform: Hedef platform CPU'sunu belirtin.
ProduceReferenceAssembly -refout: Bir başvuru derlemesi oluşturun.
TargetType -target: Çıkış derlemesinin türünü belirtin.

DocumentationFile

DocumentationFile seçeneği, belge açıklamalarını bir XML dosyasına yerleştirmenize olanak tanır. Kodunuzu belgeleme hakkında daha fazla bilgi edinmek için bkz . Belge Açıklamaları için Önerilen Etiketler. değeri, çıkış XML dosyasının yolunu belirtir. XML dosyası, derlemenin kaynak kodu dosyalarındaki açıklamaları içerir.

<DocumentationFile>path/to/file.xml</DocumentationFile>

Main veya üst düzey deyimleri içeren kaynak kod dosyası önce XML'ye aktarılır. Genellikle oluşturulan .xml dosyasını IntelliSense ile kullanmak istersiniz. .xml dosya adı, derleme adıyla aynı olmalıdır. .xml dosyası derlemeyle aynı dizinde olmalıdır. Visual Studio projesinde derlemeye başvurulduğunda, .xml dosyası da bulunur. Kod açıklamaları oluşturma hakkında daha fazla bilgi için bkz . Kod Açıklamaları Sağlama. ile <TargetType:Module>derlemediğiniz sürece, file çıkış dosyası için derleme bildirimini içeren dosyanın adını belirten ve </assembly> etiketleri içerir<assembly>. Örnekler için bkz . XML belge özelliklerini kullanma.

Not

DocumentationFile seçeneği projedeki tüm dosyalara uygulanır. Belirli bir dosya veya kod bölümü için belge açıklamalarıyla ilgili uyarıları devre dışı bırakmak için #pragma uyarısını kullanın.

Bu seçenek herhangi bir .NET SDK stili projede kullanılabilir. Daha fazla bilgi için bkz . DocumentationFile özelliği.

OutputAssembly

OutputAssembly seçeneği, çıkış dosyasının adını belirtir. Çıkış yolu, derleyici çıkışının yerleştirildiği klasörü belirtir.

<OutputAssembly>folder</OutputAssembly>

Oluşturmak istediğiniz dosyanın tam adını ve uzantısını belirtin. Çıkış dosyasının adını belirtmezseniz, MSBuild çıkış derlemesinin adını belirtmek için projenin adını kullanır. Eski stil projeleri aşağıdaki kuralları kullanır:

  • bir .exe, yöntemini veya üst düzey deyimlerini içeren kaynak kod dosyasından Main adını alır.
  • bir .dll veya .netmodule adını ilk kaynak kod dosyasından alır.

Derlemenin parçası olarak üretilen tüm modüller, derlemede üretilen herhangi bir derlemeyle ilişkilendirilmiş dosyalar haline gelir. İlişkili dosyaları görmek üzere derleme bildirimini görüntülemek için ildasm.exe kullanın.

Bir exe dosyasının bir arkadaş derlemesinin hedefi olması için OutputAssembly derleyici seçeneği gereklidir.

PlatformTarget

CLR'nin hangi sürümünün derlemeyi çalıştırabileceğini belirtir.

<PlatformTarget>anycpu</PlatformTarget>
  • anycpu (varsayılan), derlemenizi herhangi bir platformda çalışacak şekilde derler. Uygulamanız mümkün olduğunda 64 bit işlem olarak çalışır ve yalnızca bu mod kullanılabilir olduğunda 32 bit'e geri döner.
  • anycpu32bitpreferred derlemenizi herhangi bir platformda çalışacak şekilde derler. Uygulamanız hem 64 bit hem de 32 bit uygulamaları destekleyen sistemlerde 32 bit modunda çalışır. Bu seçeneği yalnızca .NET Framework 4.5 veya üzerini hedefleyen projeler için belirtebilirsiniz.
  • ARM , derlemenizi Gelişmiş RISC Makinesi (ARM) işlemcisi olan bir bilgisayarda çalışacak şekilde derler.
  • ARM64 , derlemenizi A64 yönerge kümesini destekleyen Gelişmiş RISC Makinesi (ARM) işlemcisine sahip bir bilgisayarda 64 bit CLR tarafından çalışacak şekilde derler.
  • x64 , derlemenizi AMD64 veya EM64T yönerge kümesini destekleyen bir bilgisayarda 64 bit CLR tarafından çalıştırılacak şekilde derler.
  • x86 derlemenizi 32 bit, x86 uyumlu CLR tarafından çalıştırılacak şekilde derler.
  • Itanium , derlemenizi Itanium işlemcili bir bilgisayarda 64 bit CLR tarafından çalıştırılacak şekilde derler.

64 bit Windows işletim sisteminde:

  • x86 ile derlenen derlemeler WOW64 altında çalışan 32 bit CLR üzerinde yürütülür.
  • anycpu ile derlenen bir DLL, yüklendiği işlemle aynı CLR üzerinde yürütülür.
  • anycpu ile derlenen yürütülebilir dosyalar 64 bit CLR üzerinde yürütülür.
  • anycpu32bitpreferred ile derlenen yürütülebilir dosyalar 32 bit CLR üzerinde yürütülür.

anycpu32bitpreferred ayarı yalnızca yürütülebilir (.EXE) dosyalar için geçerlidir ve .NET Framework 4.5 veya üzerini gerektirir. Windows 64 bit işletim sisteminde çalışacak bir uygulama geliştirme hakkında daha fazla bilgi için bkz . 64 bit Uygulamalar.

Visual Studio'da projenizin Derleme özellikleri sayfasında PlatformTarget seçeneğini ayarlarsınız.

Anycpu'nun davranışı .NET Core ve .NET 5 ve sonraki sürümlerde bazı ek nüanslara sahiptir. anycpu'nuzu ayarladığınızda, uygulamanızı yayımlayın ve x86 veya x64 dotnet.exe dotnet.exeile yürütebilirsiniz. Bağımsız uygulamalar için adım, dotnet publish yapılandırma RID'sinin yürütülebilir dosyasını paketler.

ProduceReferenceAssembly

ProduceReferenceAssembly seçeneği, derleyicinin başvuru derlemeleri oluşturup oluşturmadığını denetler.

<ProduceReferenceAssembly>true</ProduceReferenceAssembly>

Başvuru derlemeleri, kitaplığın genel API yüzeyini temsil etmek için gereken en düşük meta veri miktarını içeren özel bir derleme türüdür. Derleme araçlarındaki bir derlemeye başvururken önemli olan tüm üyeler için bildirimler içerir. Başvuru derlemeleri, özel üyelerin tüm üye uygulamalarını ve bildirimlerini dışlar. Bu üyelerin API sözleşmeleri üzerinde gözlemlenebilir bir etkisi yoktur. Daha fazla bilgi için bkz . .NET Kılavuzu'ndaki Başvuru derlemeleri .

ProduceReferenceAssembly ve ProduceOnlyReferenceAssembly seçenekleri birbirini dışlar.

Genellikle doğrudan başvuru derleme dosyalarıyla çalışmanız gerekmez. Varsayılan olarak, başvuru derlemeleri ara yolun bir ref alt klasöründe (örneğin obj/ref/) oluşturulur. Bunun yerine çıkış dizini altında (örneğin) bin/ref/oluşturmak için projenizde olarak true ayarlayınProduceReferenceAssemblyInOutDir.

.NET SDK 6.0.200, başvuru derlemelerini varsayılan olarak çıkış dizininden ara dizine taşıyan bir değişiklik yaptı.

TargetType

TargetType derleyici seçeneği aşağıdaki formlardan birinde belirtilebilir:

  • library: bir kod kitaplığı oluşturmak için. kitaplık varsayılan değerdir.
  • exe: bir .exe dosyası oluşturmak için.
  • modülünü seçin.
  • bir Windows programı oluşturmak için winexe .
  • ara bir .winmdobj dosyası oluşturmak için winmdobj.
  • appcontainerexe ile Windows 8.x Store uygulamaları için bir .exe dosyası oluşturun.

Not

.NET Framework hedefleri için, modülü belirtmediğiniz sürece bu seçenek bir .NET Framework derleme bildiriminin bir çıkış dosyasına yerleştirilmesine neden olur. Daha fazla bilgi için bkz . .NET'te Derlemeler ve Ortak Öznitelikler.

<TargetType>library</TargetType>

Derleyici, derleme başına yalnızca bir derleme bildirimi oluşturur. Derlemedeki tüm dosyalar hakkındaki bilgiler derleme bildirimine yerleştirilir. Komut satırında birden çok çıkış dosyası oluştururken, yalnızca bir derleme bildirimi oluşturulabilir ve komut satırında belirtilen ilk çıkış dosyasına gitmesi gerekir.

Bir derleme oluşturursanız, kodunuzun tümünün veya bir bölümünün özniteliğiyle CLS uyumlu CLSCompliantAttribute olduğunu belirtebilirsiniz.

kitaplık

Kitaplık seçeneği, derleyicinin yürütülebilir dosya (EXE) yerine dinamik bağlantı kitaplığı (DLL) oluşturmasına neden olur. DLL, .dll uzantısıyla oluşturulur. OutputAssembly seçeneğiyle aksi belirtilmediği sürece, çıkış dosyası adı ilk giriş dosyasının adını alır. .dll dosyası oluştururken yöntem Main gerekmez.

exe

exe seçeneği, derleyicinin bir yürütülebilir (EXE) konsol uygulaması oluşturmasına neden olur. Yürütülebilir dosya .exe uzantısıyla oluşturulur. Bir Windows programı yürütülebilir dosyası oluşturmak için winexe kullanın. OutputAssembly seçeneğiyle aksi belirtilmediği sürece, çıkış dosyası adı giriş noktasını içeren giriş dosyasının adını alır (Main yöntemi veya en üst düzey deyimler). bir .exe dosyasında derlenen kaynak kod dosyalarında bir ve yalnızca bir giriş noktası gereklidir. StartupObject derleyici seçeneği, kodunuzun bir yönteme Main sahip birden fazla sınıfı olduğu durumlarda yöntemini içeren sınıfı Main belirtmenize olanak tanır.

modül

Bu seçenek, derleyicinin bir derleme bildirimi oluşturmasına neden olur. Varsayılan olarak, bu seçenekle derlenerek oluşturulan çıkış dosyasının uzantısı .netmodule olacaktır. Derleme bildirimi olmayan bir dosya .NET çalışma zamanı tarafından yüklenemez. Ancak, böyle bir dosya AddModules ile bir derlemenin derleme bildirimine eklenebilir. Tek bir derlemede birden fazla modül oluşturulursa, bir modüldeki iç türler derlemedeki diğer modüller tarafından kullanılabilir. Bir modüldeki kod başka bir modüldeki türlere internal başvurduğunda, her iki modülün de AddModules ile bir derleme bildirimine eklenmesi gerekir. Visual Studio geliştirme ortamında modül oluşturma desteklenmez.

winexe

winexe seçeneği, derleyicinin bir yürütülebilir dosya (EXE), Windows programı oluşturmasına neden olur. Yürütülebilir dosya .exe uzantısıyla oluşturulur. Windows programı, .NET kitaplığından veya Windows API'lerinden kullanıcı arabirimi sağlayan programdır. Exe kullanarak bir konsol uygulaması oluşturun. OutputAssembly seçeneğiyle aksi belirtilmedikçe, çıkış dosyası adı yöntemini içeren giriş dosyasının Main adını alır. bir .exe dosyasında derlenen kaynak kod dosyalarında bir ve yalnızca Main bir yöntem gereklidir. StartupObject seçeneği, kodunuzun bir yönteme Main sahip birden fazla sınıfı olduğu durumlarda yöntemini içeren sınıfı Main belirtmenize olanak tanır.

winmdobj

winmdobj seçeneğini kullanırsanız, derleyici Windows Çalışma Zamanı ikili (.winmd) dosyasına dönüştürebileceğiniz bir ara .winmdobj dosyası oluşturur. . winmd dosyası, yönetilen dil programlarına ek olarak JavaScript ve C++ programları tarafından da kullanılabilir.

winmdobj ayarı derleyiciye bir ara modülün gerekli olduğunu bildirir. .winmdobj dosyası, bir Windows meta verileri (.winmd) dosyası oluşturmak için dışarı aktarma aracı aracılığıyla WinMDExp beslenebilir. .winmd dosyası hem özgün kitaplıktan gelen kodu hem de JavaScript veya C++ tarafından ve Windows Çalışma Zamanı tarafından kullanılan WinMD meta verilerini içerir. winmdobj derleyici seçeneği kullanılarak derlenen bir dosyanın çıkışı yalnızca WimMDExp dışarı aktarma aracı için giriş olarak kullanılır. .winmdobj dosyasının kendisine doğrudan başvurulmuyor. OutputAssembly seçeneğini kullanmadığınız sürece, çıkış dosyası adı ilk giriş dosyasının adını alır. Yöntem Main gerekli değildir.

appcontainerexe

appcontainerexe derleyici seçeneğini kullanırsanız, derleyici bir uygulama kapsayıcısında çalıştırılması gereken bir Windows yürütülebilir (.exe) dosyası oluşturur. Bu seçenek -target:winexe ile eşdeğerdir ancak Windows 8.x Store uygulamaları için tasarlanmıştır.

Uygulamanın bir uygulama kapsayıcısında çalışmasını istemek için, bu seçenek Taşınabilir Yürütülebilir Dosya (PE) dosyasında bir bit ayarlar. Bu bit ayarlandığında, CreateProcess yöntemi yürütülebilir dosyayı bir uygulama kapsayıcısının dışında başlatmayı denerse bir hata oluşur. OutputAssembly seçeneğini kullanmadığınız sürece, çıkış dosyası adı yöntemini içeren giriş dosyasının Main adını alır.