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 style
lá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:
- A forrás elérési útja argumentumot helyettesít, ha a CallerFilePathAttribute paraméter egy választható paraméterre van alkalmazva.
- A forrás elérési útja egy PDB-fájlba van beágyazva.
- 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:
- Aktuális munkakönyvtár.
- A közös nyelvi futtatókörnyezeti rendszer könyvtára.
- Az AdditionalLibPaths által megadott könyvtárak.
- 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 0x11110000
lesz 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 true
tiltva, ha false
van, vagy nincs jelen.
A ReportIVTs a következő információkat jelenti, ha engedélyezve van:
- A nem elérhető tagok diagnosztikái tartalmazzák a forrásszerelvényt, ha eltérnek az aktuális szerelvényétől.
- A fordító kinyomtatja a lefordított projekt szerelvény-identitását, szerelvénynevét és nyilvános kulcsát.
- Minden, a fordítónak átadott hivatkozáshoz kinyomtat;
- A referencia szerelvény-identitása
- Az, hogy a referencia megadja-e az aktuális projektet
InternalsVisibleTo
- A szerelvényből kapott
InternalsVisibleTo
szerelvények neve és összes nyilvános kulcsa