Aracılığıyla paylaş


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 stylegö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.Programgerekir. 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:

  1. kaynak yolu, isteğe bağlı bir parametreye uygulandığında CallerFilePathAttribute bir bağımsız değişkenle değiştirilir.
  2. Kaynak yol bir PDB dosyasına eklenir.
  3. 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 trueayarlayı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:

  1. Geçerli çalışma dizini.
  2. Ortak dil çalışma zamanı sistem dizini.
  3. AdditionalLibPaths tarafından belirtilen dizinler.
  4. 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ış 0x11110000olur. 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>

(algorithmvarsayılan) veya SHA256olmalı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 trueise tanılama etkinleştirilir, varsa falsedevre dışı bırakılır veya yoksa.

ReportIVTs etkinleştirildiğinde aşağıdaki bilgileri bildirir:

  1. Erişilemeyen üye tanılamaları, geçerli derlemeden farklıysa kaynak derlemelerini içerir.
  2. Derleyici, derlenen projenin derleme kimliğini, derleme adını ve ortak anahtarını yazdırır.
  3. Derleyiciye geçirilen her başvuru için yazdırır;
    1. Başvurunun derleme kimliği
    2. Başvurunun geçerli projeye verilip verilmeyeceği InternalsVisibleTo
    3. Bu derlemeden verilen InternalsVisibleTo tüm derlemelerin adı ve tüm ortak anahtarları