Gelişmiş C# derleyici seçenekleri
Aşağıdaki seçenekler gelişmiş senaryoları destekler. Yeni MSBuild söz dizimi Kalın olarak gösterilir. Eski csc.exe
söz dizimi içinde code style
gösterilir.
- MainEntryPoint, StartupObject /
-main
: Giriş noktasını içeren türü belirtin. - PdbFile /
-pdb
: Hata ayıklama bilgileri dosya adını belirtin. - PathMap /
-pathmap
: Derleyicinin kaynak yol adları çıkışı için bir eşleme belirtin. - ApplicationConfiguration /
-appconfig
: Derleme bağlama ayarlarını içeren bir uygulama yapılandırma dosyası belirtin. - AdditionalLibPaths /
-lib
: Başvuruları aramak için ek dizinler belirtin. - GenerateFullPaths /
-fullpath
: Derleyici tam yollar oluşturur. - PreferredUILang /
-preferreduilang
: Tercih edilen çıkış dili adını belirtin. - BaseAddress /
-baseaddress
: Oluşturulacak kitaplığın temel adresini belirtin. - ChecksumAlgorithm /
-checksumalgorithm
: PDB'de depolanan kaynak dosya sağlama toplamını hesaplamak için algoritmayı belirtin. - CodePage /
-codepage
: Kaynak dosyaları açarken kullanılacak kod sayfasını belirtin. - Utf8Output /
-utf8output
: UTF-8 kodlamasında derleyici iletilerinin çıkışını alın. - FileAlignment /
-filealign
: Çıktı dosyası bölümleri için kullanılan hizalamayı belirtin. - ErrorEndLocation /
-errorendlocation
: Her hatanın bitiş konumunun çıkış satırı ve sütunu. - NoStandardLib
-nostdlib
/ : Standart kitaplık mscorlib.dll başvurma. - SubsystemVersion /
-subsystemversion
: Bu derlemenin alt sistem sürümünü belirtin. - ModuleAssemblyName /
-moduleassemblyname
: Bu modülün parçası olacağı derlemenin adı. - ReportIVTs /
-reportivts
: Bilgiler hakkında System.Runtime.CompilerServices.InternalsVisibleToAttribute ek bilgi üretin.
Bu seçeneklerden herhangi birini dosyanızdaki bir <PropertyGroup>
öğeye eklersiniz *.csproj
:
<PropertyGroup>
<StartupObject>...</StartupObject>
...
</PropertyGroup>
MainEntryPoint veya StartupObject
Bu seçenek, birden fazla sınıf bir Main
yöntem içeriyorsa, programın giriş noktasını içeren sınıfı belirtir.
<StartupObject>MyNamespace.Program</StartupObject>
veya
<MainEntryPoint>MyNamespace.Program</MainEntryPoint>
Burada Program
yöntemini içeren Main
türdür. Sağlanan sınıf adı tam olmalıdır; sınıfını içeren tam ad alanını ve ardından sınıf adını içermelidir. Örneğin, yöntem ad alanındaki sınıfın Program
içinde bulunduğunda Main
MyApplication.Core
, derleyici seçeneğinin olması -main:MyApplication.Core.Program
gerekir. Derlemeniz bir Main
yöntemle birden fazla tür içeriyorsa, yöntemi içeren Main
türü belirtebilirsiniz.
Not
Bu seçenek, proje bir veya daha fazla Main
yöntem içerse bile üst düzey deyimleri içeren bir proje için kullanılamaz.
PdbFile
PdbFile derleyici seçeneği, hata ayıklama simgeleri dosyasının adını ve konumunu belirtir. filename
değeri, hata ayıklama simgeleri dosyasının adını ve konumunu belirtir.
<PdbFile>filename</PdbFile>
DebugType'ı belirttiğinizde, derleyici, derleyicinin çıkış dosyasını (.exe veya .dll) oluşturduğu dizinde bir .pdb dosyası oluşturur. .pdb dosyası, çıktı dosyasının adıyla aynı temel dosya adına sahiptir. PdbFile , .pdb dosyası için bilinmeyen bir dosya adı ve konumu belirtmenize olanak tanır. Bu derleyici seçeneği Visual Studio geliştirme ortamında ayarlanamaz ve program aracılığıyla değiştirilemez.
PathMap
Not
PathMap belirtilmesi, kesme noktalarının yerel hata ayıklama derlemelerinde çalışmasını engeller. Yalnızca üretim veya sürekli tümleştirme derlemeleri için PathMap'i ayarlayın.
PathMap derleyici seçeneği, fiziksel yolların derleyici tarafından çıkış olarak kaynak yol adlarına nasıl eşleneceklerini belirtir. Bu seçenek, derleyicinin çalıştırıldığı makinedeki her fiziksel yolu çıkış dosyalarında yazılması gereken ilgili bir yola eşler. Aşağıdaki örnekte, path1
geçerli ortamdaki kaynak dosyaların tam yoludur ve sourcePath1
tüm çıkış dosyalarında bunun yerine kaynak yol kullanılır path1
. Birden çok eşlenmiş kaynak yolu belirtmek için her biri virgülle ayırın.
<PathMap>path1=sourcePath1,path2=sourcePath2</PathMap>
Derleyici, aşağıdaki nedenlerle kaynak yolunu çıkışına yazar:
- kaynak yolu, isteğe bağlı bir parametreye uygulandığında CallerFilePathAttribute bir bağımsız değişkenle değiştirilir.
- Kaynak yol bir PDB dosyasına eklenir.
- PDB dosyasının yolu bir PE (taşınabilir yürütülebilir dosya) dosyasına eklenir.
ApplicationConfiguration
ApplicationConfiguration derleyici seçeneği, C# uygulamasının derleme bağlama zamanında derlemenin uygulama yapılandırması (app.config) dosyasının ortak dil çalışma zamanına (CLR) konumunu belirtmesini sağlar.
<ApplicationConfiguration>file</ApplicationConfiguration>
Burada file
, derleme bağlama ayarlarını içeren uygulama yapılandırma dosyasıdır. ApplicationConfiguration'ın bir kullanımı, derlemenin aynı anda hem .NET Framework sürümüne hem de belirli bir başvuru derlemesinin Silverlight için .NET Framework sürümüne başvurması gereken gelişmiş senaryolardır. Örneğin, Windows Presentation Foundation'da (WPF) yazılmış bir XAML tasarımcısının hem WPF Desktop'a, tasarımcının kullanıcı arabirimine hem de Silverlight'a dahil edilen WPF alt kümesine başvurması gerekebilir. Aynı tasarımcı derlemesinin her iki derlemeye de erişmesi gerekir. Derleme bağlaması iki derlemeyi eşdeğer olarak gördüğünden, varsayılan olarak ayrı başvurular derleyici hatasına neden olur. ApplicationConfiguration derleyici seçeneği, aşağıdaki örnekte gösterildiği gibi bir etiket kullanarak varsayılan davranışı devre dışı bırakan bir <supportPortability>
app.config dosyasının konumunu belirtmenizi sağlar.
<supportPortability PKT="7cec85d7bea7798e" enable="false"/>
Derleyici, dosyanın konumunu CLR'nin derleme bağlama mantığına geçirir.
Not
Projede zaten ayarlanmış olan app.config dosyasını kullanmak için , .csproj dosyasına özellik etiketi <UseAppConfigForCompiler>
ekleyin ve değerini olarak true
ayarlayın. Farklı bir app.config dosyası belirtmek için özellik etiketi <AppConfigForCompiler>
ekleyin ve değerini dosyanın konumuna ayarlayın.
Aşağıdaki örnekte, bir uygulamanın her iki uygulamada da bulunan herhangi bir .NET Framework derlemesinin .NET Framework uygulamasına ve Silverlight için .NET Framework uygulamasına başvurulara sahip olmasını sağlayan bir app.config dosyası gösterilmektedir. ApplicationConfiguration derleyici seçeneği bu app.config dosyasının konumunu belirtir.
<configuration>
<runtime>
<assemblyBinding>
<supportPortability PKT="7cec85d7bea7798e" enable="false"/>
<supportPortability PKT="31bf3856ad364e35" enable="false"/>
</assemblyBinding>
</runtime>
</configuration>
AdditionalLibPaths
AdditionalLibPaths seçeneği, Başvurular seçeneğiyle başvuruda bulunan derlemelerin konumunu belirtir.
<AdditionalLibPaths>dir1[,dir2]</AdditionalLibPaths>
Başvurulan bir derleme geçerli çalışma dizininde (derleyiciyi çağırdığınız dizin) veya ortak dil çalışma zamanının sistem dizininde bulunamazsa derleyicinin bakacağı bir dizindir dir1
. dir2
, derleme başvurularını aramak için bir veya daha fazla ek dizindir. Dizin adlarını virgülle ve aralarında boşluk olmadan ayırın. Derleyici, tam olarak nitelenmemiş derleme başvurularını aşağıdaki sırayla arar:
- Geçerli çalışma dizini.
- Ortak dil çalışma zamanı sistem dizini.
- AdditionalLibPaths tarafından belirtilen dizinler.
- LIB ortam değişkeni tarafından belirtilen dizinler.
Derleme başvurusu belirtmek için Başvuru kullanın. AdditionalLibPaths ek bir özelliktir. Bunu birden çok kez belirtmek, önceki değerlerin sonuna eklenir. Bağımlı derlemenin yolu derleme bildiriminde belirtilmediğinden, uygulama derlemeyi genel derleme önbelleğinde bulur ve kullanır. Derlemeye başvuran derleyici, ortak dil çalışma zamanının derlemeyi çalışma zamanında bulup yükleyebileceği anlamına gelmez. Çalışma zamanının başvuruda bulunan derlemeleri nasıl aradığınıza ilişkin ayrıntılar için bkz. Çalışma Zamanı Derlemeleri Nasıl Bulur?
GenerateFullPaths
GenerateFullPaths seçeneği, derleme hatalarını ve uyarılarını listelerken derleyicinin dosyanın tam yolunu belirtmesine neden olur.
<GenerateFullPaths>true</GenerateFullPaths>
Varsayılan olarak, derlemeden kaynaklanan hatalar ve uyarılar, bir hatanın bulunduğu dosyanın adını belirtir. GenerateFullPaths seçeneği, derleyicinin dosyanın tam yolunu belirtmesine neden olur. Bu derleyici seçeneği Visual Studio'da kullanılamaz ve program aracılığıyla değiştirilemez.
PreferredUILang
PreferredUILang derleyici seçeneğini kullanarak, C# derleyicisinin hata iletileri gibi çıktıyı görüntülediği dili belirtebilirsiniz.
<PreferredUILang>language</PreferredUILang>
Burada language
, derleyici çıktısı için kullanılacak dilin dil adıdır . C# derleyicisinin hata iletileri ve diğer komut satırı çıktıları için kullanmasını istediğiniz dili belirtmek için PreferredUILang derleyicisi seçeneğini kullanabilirsiniz. Dil için dil paketi yüklü değilse, bunun yerine işletim sisteminin dil ayarı kullanılır.
BaseAddress
BaseAddress seçeneği, DLL'nin yüklendiği tercih edilen temel adresi belirtmenize olanak tanır. Bu seçeneğin ne zaman ve neden kullanılacağı hakkında daha fazla bilgi için bkz . Larry Osterman'ın Web Günlüğü.
<BaseAddress>address</BaseAddress>
Burada address
DLL'nin temel adresidir. Bu adres ondalık, onaltılık veya sekizli sayı olarak belirtilebilir. DLL için varsayılan temel adres .NET ortak dil çalışma zamanı tarafından ayarlanır. Bu adresteki alt sıralı sözcük yuvarlanacak. Örneğin, belirtirseniz 0x11110001
, öğesine yuvarlanmış 0x11110000
olur. DLL imzalama işlemini tamamlamak için -R seçeneğiyle SN.EXE kullanın.
ChecksumAlgorithm
Bu seçenek, PDB'deki kaynak dosyaları kodlamak için kullandığımız sağlama toplamı algoritmasını denetler.
<ChecksumAlgorithm>algorithm</ChecksumAlgorithm>
(algorithm
varsayılan) veya SHA256
olmalıdır SHA1
.
CodePage
Bu seçenek, gerekli sayfa sistem için geçerli varsayılan kod sayfası değilse derleme sırasında hangi kod sayfasının kullanılacağını belirtir.
<CodePage>id</CodePage>
Burada id
, derlemedeki tüm kaynak kod dosyaları için kullanılacak kod sayfasının kimliğidir. Derleyici ilk olarak tüm kaynak dosyaları UTF-8 olarak yorumlamaya çalışır. Kaynak kod dosyalarınız UTF-8 dışında bir kodlamadaysa ve 7 bit ASCII karakter dışında karakterler kullanıyorsa, hangi kod sayfasının kullanılacağını belirtmek için CodePage seçeneğini kullanın. CodePage , derlemenizdeki tüm kaynak kod dosyaları için geçerlidir. Sisteminizde hangi kod sayfalarının desteklendiği hakkında bilgi için bkz . GetCPInfo .
Utf8Output
Utf8Output seçeneği UTF-8 kodlamasını kullanarak derleyici çıktısını görüntüler.
<Utf8Output>true</Utf8Output>
Bazı uluslararası yapılandırmalarda, derleyici çıkışı konsolunda doğru şekilde görüntülenemiyor. Utf8Output kullanın ve derleyici çıktısını bir dosyaya yeniden yönlendirin.
FileAlignment
FileAlignment seçeneği, çıkış dosyanızdaki bölümlerin boyutunu belirtmenize olanak tanır. Geçerli değerler: 512, 1024, 2048, 4096 ve 8192. Bu değerler bayt cinsindendir.
<FileAlignment>number</FileAlignment>
Visual Studio'da projenizin Derleme özelliklerinin Gelişmiş sayfasından FileAlignment seçeneğini ayarlarsınız. Her bölüm FileAlignment değerinin katı olan bir sınıra hizalanır. Sabit bir varsayılan yoktur. FileAlignment belirtilmezse, ortak dil çalışma zamanı derleme zamanında bir varsayılan seçer. Bölüm boyutunu belirterek çıkış dosyasının boyutunu etkilersiniz. Bölüm boyutunu değiştirmek, daha küçük cihazlarda çalışan programlar için yararlı olabilir. Çıkış dosyanızdaki bölümler hakkındaki bilgileri görmek için DUMPBIN kullanın.
ErrorEndLocation
Derleyiciye her hatanın bitiş konumunun çıkış satırını ve sütununu göndermesini ister.
<ErrorEndLocation>true</ErrorEndLocation>
Varsayılan olarak, derleyici tüm hatalar ve uyarılar için kaynaktaki başlangıç konumunu yazar. Bu seçenek true olarak ayarlandığında, derleyici her hata ve uyarı için hem başlangıç hem de bitiş konumunu yazar.
NoStandardLib
NoStandardLib , sistem ad alanının tamamını tanımlayan mscorlib.dll içeri aktarılmasını engeller.
<NoStandardLib>true</NoStandardLib>
Kendi Sistem ad alanınızı ve nesnelerinizi tanımlamak veya oluşturmak istiyorsanız bu seçeneği kullanın. NoStandardLib belirtmezseniz, mscorlib.dll programınıza aktarılır (belirtilirken <NoStandardLib>false</NoStandardLib>
olduğu gibi).
SubsystemVersion
Yürütülebilir dosyanın çalıştırıldığı alt sistemin en düşük sürümünü belirtir. En yaygın olarak, bu seçenek yürütülebilir dosyanın windows'un eski sürümlerinde bulunmayan güvenlik özelliklerini kullanabilmesini sağlar.
Not
Alt sistemin kendisini belirtmek için TargetType derleyici seçeneğini kullanın.
<SubsystemVersion>major.minor</SubsystemVersion>
, major.minor
ana ve ikincil sürümler için noktalı bir gösteriminde ifade edildiği gibi alt sistemin gerekli en düşük sürümünü belirtin. Örneğin, bir uygulamanın Windows 7'den eski bir işletim sisteminde çalışamazsınız. Bu makalenin devamında açıklanan tabloda açıklandığı gibi bu seçeneğin değerini 6,01 olarak ayarlayın. ve minor
değerlerini major
tamsayı olarak belirtirsiniz. Sürümdeki baştaki minor
sıfırlar sürümü değiştirmez, ancak sondaki sıfırlar değiştirir. Örneğin, 6.1 ve 6.01 aynı sürüme başvurur, ancak 6.10 farklı bir sürüme başvurur. Karışıklığı önlemek için ikincil sürümü iki basamak olarak ifade etmenizi öneririz.
Aşağıdaki tabloda Windows'un yaygın alt sistem sürümleri listelenmektedir.
Windows sürümü | Alt sistem sürümü |
---|---|
Windows Server 2003 | 5.02 |
Windows Vista | 6,00 |
Windows 7 | 6.01 |
Windows Server 2008 | 6.01 |
Windows 8 | 6.02 |
SubsystemVersion derleyici seçeneğinin varsayılan değeri aşağıdaki listedeki koşullara bağlıdır:
- Aşağıdaki listede herhangi bir derleyici seçeneği ayarlandıysa varsayılan değer 6,02'dir:
- MSBuild kullanıyorsanız varsayılan değer 6.00'dır, .NET Framework 4.5'i hedeflediniz ve bu listede daha önce belirtilen derleyici seçeneklerini ayarlamadınız.
- Önceki koşullardan hiçbiri doğru değilse varsayılan değer 4,00'dır.
ModuleAssemblyName
.netmodule'un erişebileceği, nonpublic türleri olan bir derlemenin adını belirtir.
<ModuleAssemblyName>assembly_name</ModuleAssemblyName>
ModuleAssemblyName , . netmodule oluşturulurken ve aşağıdaki koşulların doğru olduğu durumlarda kullanılmalıdır:
- .netmodule, var olan bir derlemedeki nonpublic türlerine erişime ihtiyaç duyar.
- .netmodule'un oluşturulacağı derlemenin adını biliyorsunuz.
- Var olan derleme, arkadaş derlemesine, 'nin içine girdiği derlemeye erişim izni verdi.netmodule oluşturulacak.
.netmodule oluşturma hakkında daha fazla bilgi için bkz. Modülün TargetType seçeneği. Arkadaş derlemeleri hakkında daha fazla bilgi için bkz . Arkadaş Derlemeleri.
ReportIVTs
Derleme sırasında bulunan ek System.Runtime.CompilerServices.InternalsVisibleToAttribute tanılama bilgilerini etkinleştirin veya devre dışı bırakın:
<ReportIVTs>true</ReportIVTs>
Öğe içeriği true
ise tanılama etkinleştirilir, varsa false
devre dışı bırakılır veya yoksa.
ReportIVTs etkinleştirildiğinde aşağıdaki bilgileri bildirir:
- Erişilemeyen üye tanılamaları, geçerli derlemeden farklıysa kaynak derlemelerini içerir.
- Derleyici, derlenen projenin derleme kimliğini, derleme adını ve ortak anahtarını yazdırır.
- Derleyiciye geçirilen her başvuru için yazdırır;
- Başvurunun derleme kimliği
- Başvurunun geçerli projeye verilip verilmeyeceği
InternalsVisibleTo
- Bu derlemeden verilen
InternalsVisibleTo
tüm derlemelerin adı ve tüm ortak anahtarları