Megosztás a következőn keresztül:


Speciális C# fordítóbeállítások

Az alábbi lehetőségek speciális forgatókönyveket támogatnak. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis a következőben code stylelátható: .

  • MainEntryPoint, StartupObject / -main: Adja meg a belépési pontot tartalmazó típust.
  • PdbFile / -pdb: Adja meg a hibakeresési információs fájl nevét.
  • Elérési úttérkép / -pathmap: Adja meg a fordító által a forrásútvonalak neveinek kimenetéhez tartozó leképezést.
  • ApplicationConfiguration / -appconfig: Szerelvénykötési beállításokat tartalmazó alkalmazáskonfigurációs fájl megadása.
  • AdditionalLibPaths / -lib: Adjon meg további könyvtárakat a hivatkozások kereséséhez.
  • GenerateFullPaths / -fullpath: A fordító teljesen minősített elérési utakat hoz létre.
  • PreferredUILang / -preferreduilang: Adja meg az előnyben részesített kimeneti nyelv nevét.
  • BaseAddress / -baseaddress: Adja meg a létrehozandó kódtár alapcímét.
  • ChecksumAlgorithm / -checksumalgorithm : A PDB-ben tárolt forrásfájl-ellenőrzőösszeg kiszámítására szolgáló algoritmus megadása.
  • CodePage / -codepage: Adja meg a forrásfájlok megnyitásakor használni kívánt kódlapot.
  • Utf8Output / -utf8output: Kimeneti fordítóüzenetek az UTF-8 kódolásban.
  • FileAlignment / -filealign: Adja meg a kimeneti fájlszakaszokhoz használt igazítást.
  • ErrorEndLocation / -errorendlocation: Az egyes hibák végponthelyének kimeneti sora és oszlopa.
  • NoStandardLib / -nostdlib: Ne hivatkozzon standard kódtárra mscorlib.dll.
  • SubsystemVersion / -subsystemversion: Adja meg a szerelvény alrendszerverzióját.
  • ModuleAssemblyName / -moduleassemblyname: Annak a szerelvénynek a neve, amely a modul része lesz.
  • ReportIVTs / -reportivts: További információk System.Runtime.CompilerServices.InternalsVisibleToAttribute készítése.

A fájl egyik <PropertyGroup> eleméhez a következő lehetőségek bármelyikét hozzáadhatja *.csproj :

<PropertyGroup>
    <StartupObject>...</StartupObject>
    ...
</PropertyGroup>

MainEntryPoint vagy StartupObject

Ez a beállítás a program belépési pontjának osztályát adja meg, ha egynél több osztály tartalmaz metódust Main .

<StartupObject>MyNamespace.Program</StartupObject>

vagy

<MainEntryPoint>MyNamespace.Program</MainEntryPoint>

Hol Program található a metódust tartalmazó Main típus. A megadott osztálynévnek teljes mértékben minősítettnek kell lennie; tartalmaznia kell az osztályt tartalmazó teljes névteret, majd az osztály nevét. Ha például a metódus a Main Program névtér osztályán MyApplication.Core belül található, a fordító beállításának meg kell lennie -main:MyApplication.Core.Program. Ha a fordítás több típust is tartalmaz egy Main metódussal, megadhatja, hogy melyik típus tartalmazza a metódust Main .

Feljegyzés

Ez a beállítás nem használható olyan projektekhez, amelyek felső szintű utasításokat tartalmaznak, még akkor sem, ha a projekt egy vagy több Main metódust tartalmaz.

PdbFile

A PdbFile fordítóbeállítás a hibakeresési szimbólumfájl nevét és helyét adja meg. Az filename érték megadja a hibakeresési szimbólumfájl nevét és helyét.

<PdbFile>filename</PdbFile>

A DebugType megadásakor a fordító létrehoz egy .pdb fájlt ugyanabban a könyvtárban, ahol a fordító létrehozza a kimeneti fájlt (.exe vagy .dll). A .pdb fájl alapfájljának neve megegyezik a kimeneti fájl nevével. A PdbFile lehetővé teszi a .pdb fájl nem pontos fájlnevének és helyének megadását. Ez a fordítóbeállítás nem állítható be a Visual Studio fejlesztői környezetében, és programozott módon sem módosítható.

Elérési úttérkép

Feljegyzés

Az Elérési úttérkép megadása megakadályozza, hogy a töréspontok a helyi hibakeresési buildekben működjön. Csak az éles vagy folyamatos integrációs buildekhez állítsa be a PathMap-et.

A PathMap-fordító beállítás megadja, hogyan képezheti le a fizikai útvonalakat a forrásútvonalak neveinek a fordító által történő kimenetéhez. Ez a beállítás megfelelteti az egyes fizikai elérési utakat azon a gépen, amelyen a fordító egy megfelelő elérési útra fut, amelyet a kimeneti fájlokban kell írni. Az alábbi példában path1 az aktuális környezetben található forrásfájlok teljes elérési útja látható, és sourcePath1 a forrás elérési útja bármely kimeneti fájlban helyettesíthető path1 . Több megfeleltetett forrásútvonal megadásához vesszővel kell elválasztani azokat.

<PathMap>path1=sourcePath1,path2=sourcePath2</PathMap>

A fordító a következő okokból írja be a forrás elérési útját a kimenetébe:

  1. A forrás elérési útja argumentumot helyettesít, ha a CallerFilePathAttribute paraméter egy választható paraméterre van alkalmazva.
  2. A forrás elérési útja egy PDB-fájlba van beágyazva.
  3. A PDB-fájl elérési útja egy PE (hordozható végrehajtható) fájlba van beágyazva.

ApplicationConfiguration

Az ApplicationConfiguration fordítóbeállítás lehetővé teszi, hogy egy C#-alkalmazás a szerelvény alkalmazáskonfigurációs (app.config) fájljának helyét a közös nyelvi futtatókörnyezetbe (CLR) adja meg a szerelvény kötési idején.

<ApplicationConfiguration>file</ApplicationConfiguration>

Hol file található az alkalmazáskonfigurációs fájl, amely szerelvénykötési beállításokat tartalmaz. Az ApplicationConfiguration egyik olyan speciális forgatókönyv, amelyben egy szerelvénynek egyszerre kell hivatkoznia egy adott referenciaszerelvény .NET-keretrendszer verziójára és a Silverlight-verzióra vonatkozó .NET-keretrendszer. Előfordulhat például, hogy egy Windows megjelenítési alaprendszer (WPF) nyelven írt XAML-tervezőnek a WPF Desktopra, a tervező felhasználói felületére és a Silverlight részét képező WPF-részhalmazra is hivatkoznia kell. Ugyanannak a tervezőszerelvénynek mindkét szerelvényhez hozzá kell férnie. Alapértelmezés szerint a különálló hivatkozások fordítóhibát okoznak, mivel a szerelvénykötés egyenértékűnek látja a két szerelvényt. Az ApplicationConfiguration fordítóbeállítással megadhatja az app.config fájl helyét, amely letiltja az alapértelmezett viselkedést egy <supportPortability> címke használatával, ahogyan az az alábbi példában látható.

<supportPortability PKT="7cec85d7bea7798e" enable="false"/>

A fordító átadja a fájl helyét a CLR szerelvénykötési logikájának.

Feljegyzés

A projektben már beállított app.config fájl használatához adjon hozzá tulajdonságcímkét <UseAppConfigForCompiler> a .csproj fájlhoz, és állítsa az értékét a következőre true: . Egy másik app.config fájl megadásához adjon hozzá tulajdonságcímkét <AppConfigForCompiler> , és állítsa az értékét a fájl helyére.

Az alábbi példa egy app.config fájlt mutat be, amely lehetővé teszi, hogy az alkalmazás mind a .NET-keretrendszer-implementációra, mind a silverlight-implementáció .NET-keretrendszer hivatkozik a mindkét implementációban található .NET-keretrendszer-szerelvényre. Az ApplicationConfiguration fordítóbeállítás az app.config fájl helyét határozza meg.

<configuration>
  <runtime>
    <assemblyBinding>
      <supportPortability PKT="7cec85d7bea7798e" enable="false"/>
      <supportPortability PKT="31bf3856ad364e35" enable="false"/>
    </assemblyBinding>
  </runtime>
</configuration>

AdditionalLibPaths

Az AdditionalLibPaths beállítás a Hivatkozások beállítással hivatkozott szerelvények helyét adja meg.

<AdditionalLibPaths>dir1[,dir2]</AdditionalLibPaths>

Hol dir1 található az a könyvtár, amelyben a fordító megkeresheti, ha a hivatkozott szerelvény nem található az aktuális munkakönyvtárban (abban a könyvtárban, amelyből a fordítót meghívja) vagy a közös nyelvi futtatókörnyezet rendszerkönyvtárában. dir2 egy vagy több további könyvtár, amelyekben szerelvényhivatkozásokat kereshet. Különítse el a címtárneveket vesszővel, szóköz nélkül. A fordító olyan szerelvényhivatkozásokat keres, amelyek nem teljes mértékben minősítettek az alábbi sorrendben:

  1. Aktuális munkakönyvtár.
  2. A közös nyelvi futtatókörnyezeti rendszer könyvtára.
  3. Az AdditionalLibPaths által megadott könyvtárak.
  4. A LIB környezeti változó által megadott könyvtárak.

A Hivatkozás használatával szerelvényhivatkozást adhat meg. Az AdditionalLibPaths additív. Ha többször adja meg, az bármely korábbi értékhez hozzáfűz. Mivel a függő szerelvény elérési útja nincs megadva a szerelvényjegyzékben, az alkalmazás megkeresi és használja a szerelvényt a globális szerelvény-gyorsítótárban. A szerelvényre hivatkozó fordító nem azt jelenti, hogy a közös nyelvi futtatókörnyezet futásidőben megkeresheti és betöltheti a szerelvényt. A runtime a hivatkozott szerelvények keresésével kapcsolatos részletekért tekintse meg, hogy a futtatókörnyezet hogyan találja meg a szerelvényeket.

GenerateFullPaths

A GenerateFullPaths beállítás hatására a fordító megadja a fájl teljes elérési útját fordítási hibák és figyelmeztetések listázásakor.

<GenerateFullPaths>true</GenerateFullPaths>

Alapértelmezés szerint a fordításból eredő hibák és figyelmeztetések megadják annak a fájlnak a nevét, amelyben hiba történt. A GenerateFullPaths beállítás hatására a fordító megadja a fájl teljes elérési útját. Ez a fordítóbeállítás nem érhető el a Visual Studióban, és programozott módon nem módosítható.

PreferredUILang

A PreferáltUILang fordító beállítással megadhatja, hogy a C#-fordító milyen nyelven jeleníti meg a kimenetet, például hibaüzeneteket.

<PreferredUILang>language</PreferredUILang>

Hol language található a fordító kimenetéhez használni kívánt nyelv nyelvének neve . A PreferredUILang fordítóval megadhatja azt a nyelvet, amelyet a C#-fordító használni szeretne a hibaüzenetekhez és más parancssori kimenetekhez. Ha nincs telepítve a nyelv nyelvi csomagja, a rendszer ehelyett az operációs rendszer nyelvi beállítását használja.

BaseAddress

A BaseAddress beállítással megadhatja azt az elsődleges alapcímet, amelybe betölt egy DLL-t. További információ arról, hogy mikor és miért érdemes ezt a lehetőséget használni, olvassa el Larry Osterman webnaplóját.

<BaseAddress>address</BaseAddress>

Hol address található a DLL alapcíme. Ez a cím megadható decimális, hexadecimális vagy oktális számként. A DLL alapértelmezett alapcímét a .NET közös nyelvi futtatókörnyezete állítja be. A címben szereplő alsórendű szó kerekítve lesz. Ha például megadja 0x11110001, akkor a kerekítés a következőre 0x11110000lesz kerekítve: . A DLL aláírási folyamatának befejezéséhez használja a SN.EXE az -R beállítással.

ChecksumAlgorithm

Ez a beállítás szabályozza az ellenőrzőösszeg-algoritmust, amelyet a forrásfájlok kódolásához használunk a PDB-ben.

<ChecksumAlgorithm>algorithm</ChecksumAlgorithm>

Az algorithm értéknek SHA1 vagy (alapértelmezett) vagy SHA256.

CodePage

Ez a beállítás megadja, hogy melyik kódlapot használja a fordítás során, ha a szükséges oldal nem a rendszer jelenlegi alapértelmezett kódlapja.

<CodePage>id</CodePage>

Hol id található annak a kódlapnak az azonosítója, amelyet a fordításban lévő összes forráskódfájlhoz használni kell. A fordító először UTF-8-ként próbálja értelmezni az összes forrásfájlt. Ha a forráskódfájlok nem UTF-8 kódolásban vannak, és 7 bites ASCII-karaktereken kívüli karaktereket használnak, a CodePage beállítással adja meg, hogy melyik kódlapot kell használni. A CodePage a fordításban lévő összes forráskódfájlra vonatkozik. A rendszer által támogatott kódlapok megkereséséről a GetCPInfo című témakörben olvashat.

Utf8Output

Az Utf8Output beállítás UTF-8 kódolással jeleníti meg a fordító kimenetét.

<Utf8Output>true</Utf8Output>

Egyes nemzetközi konfigurációkban a fordító kimenete nem jeleníthető meg megfelelően a konzolon. Használja az Utf8Output parancsot , és irányítsa át a fordító kimenetét egy fájlba.

FileAlignment

A FileAlignment beállítással megadhatja a kimeneti fájl szakaszainak méretét. Az érvényes értékek: 512, 1024, 2048, 4096 és 8192. Ezek az értékek bájtban vannak.

<FileAlignment>number</FileAlignment>

A FileAlignment beállítást a Projekt buildtulajdonságainak Speciális lapján állíthatja be a Visual Studióban. Minden szakasz egy olyan határvonalhoz van igazítva, amely a FileAlignment érték többszöröse. Nincs rögzített alapértelmezett érték. Ha a FileAlignment nincs megadva, a közös nyelvi futtatókörnyezet a fordításkor alapértelmezett értéket választ. A szakasz méretének megadásával befolyásolhatja a kimeneti fájl méretét. A szakaszméret módosítása hasznos lehet a kisebb eszközökön futó programok esetében. A DUMPBIN használatával megtekintheti a kimeneti fájl szakaszaival kapcsolatos információkat.

ErrorEndLocation

Utasítja a fordítót, hogy az egyes hibák végpontjának sorát és oszlopát adja meg.

<ErrorEndLocation>true</ErrorEndLocation>

Alapértelmezés szerint a fordító minden hibához és figyelmeztetéshez megírja a forrás kezdő helyét. Ha ez a beállítás igaz értékre van állítva, a fordító az egyes hibák és figyelmeztetések kezdő és záró helyét is megírja.

NoStandardLib

A NoStandardLib megakadályozza a teljes rendszernévteret meghatározó mscorlib.dll importálását.

<NoStandardLib>true</NoStandardLib>

Ezt a lehetőséget akkor használja, ha saját rendszernévteret és objektumokat szeretne definiálni vagy létrehozni. Ha nem adja meg a NoStandardLib értéket, a program importálja mscorlib.dll (ugyanaz, mint a <NoStandardLib>false</NoStandardLib>beállítás).

SubsystemVersion

Meghatározza annak az alrendszernek a minimális verzióját, amelyen a végrehajtható fájl fut. Ez a beállítás általában biztosítja, hogy a végrehajtható fájl olyan biztonsági funkciókat használjon, amelyek nem érhetők el a Windows régebbi verzióiban.

Feljegyzés

Az alrendszer megadásához használja a TargetType fordítót.

<SubsystemVersion>major.minor</SubsystemVersion>

Adja major.minor meg az alrendszer minimálisan szükséges verzióját a fő- és alverziók pont jelölésében kifejezve. Megadhatja például, hogy egy alkalmazás nem futtatható Windows 7-nél régebbi operációs rendszeren. Állítsa a beállítás értékét 6.01 értékre, ahogyan azt a cikk későbbi táblázata ismerteti. Az értékek major egész számként és minor egészként is megadhatók. A verzió első minor nullái nem módosítják a verziót, de a záró nullák igen. A 6.1 és a 6.01 például ugyanarra a verzióra hivatkozik, de a 6.10 egy másik verzióra hivatkozik. Javasoljuk, hogy az alverziót két számjegyként fejezze ki a keveredés elkerülése érdekében.

Az alábbi táblázat a Windows általános alrendszerverzióit sorolja fel.

Windows-verzió Alrendszer verziója
Windows Server 2003 5.02
Windows Vista 6,00
Windows 7 6.01
Windows Server 2008 6.01
Windows 8 6,02

A SubsystemVersion fordítóbeállítás alapértelmezett értéke a következő listában szereplő feltételektől függ:

  • Az alapértelmezett érték 6,02, ha az alábbi lista valamelyik fordítóbeállítása be van állítva:
  • Az alapértelmezett érték 6,00 az MSBuild használata esetén, a 4.5-ös .NET-keretrendszer céloz meg, és a listában korábban megadott fordítóbeállítások egyikét sem állította be.
  • Az alapértelmezett érték 4,00, ha az előző feltételek egyike sem igaz.

ModuleAssemblyName

Annak a szerelvénynek a nevét adja meg, amelyhez a .netmodule nem nyilvános típusok férhetnek hozzá.

<ModuleAssemblyName>assembly_name</ModuleAssemblyName>

A ModuleAssemblyName a .netmodule létrehozásakor használható, és ahol a következő feltételek teljesülnek:

  • A .netmodule-nak hozzáférésre van szüksége a nem nyilvános típusokhoz egy meglévő szerelvényben.
  • Ismeri annak a szerelvénynek a nevét, amelybe a .netmodule épül.
  • A meglévő szerelvény hozzáférést adott a barát szerelvényének ahhoz a szerelvényhez, amelybe a .netmodule épül.

A .netmodulok létrehozásával kapcsolatos további információkért lásd a modul TargetType beállítását. Az ismerős szerelvényekről további információt a Friend Assemblies című témakörben talál.

ReportIVTs

További diagnosztikai információk System.Runtime.CompilerServices.InternalsVisibleToAttribute engedélyezése vagy letiltása a fordítás során:

<ReportIVTs>true</ReportIVTs>

A diagnosztikát akkor engedélyezi a rendszer, ha az elem tartalma le van truetiltva, ha falsevan, vagy nincs jelen.

A ReportIVTs a következő információkat jelenti, ha engedélyezve van:

  1. A nem elérhető tagok diagnosztikái tartalmazzák a forrásszerelvényt, ha eltérnek az aktuális szerelvényétől.
  2. A fordító kinyomtatja a lefordított projekt szerelvény-identitását, szerelvénynevét és nyilvános kulcsát.
  3. Minden, a fordítónak átadott hivatkozáshoz kinyomtat;
    1. A referencia szerelvény-identitása
    2. Az, hogy a referencia megadja-e az aktuális projektet InternalsVisibleTo
    3. A szerelvényből kapott InternalsVisibleTo szerelvények neve és összes nyilvános kulcsa