Kódgenerálást vezérlő C#-fordító beállításai
Az alábbi beállítások szabályozzák a kódfordító által történő létrehozását. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis a .code style
- Hibakeresési típus /
-debug
: Hibakeresési információkat bocsát ki (vagy nem bocsát ki). - Optimalizálás /
-optimize
: Optimalizálás engedélyezése. - Determinisztikus /
-deterministic
: Byte-for-byte egyenértékű kimenetet állít elő ugyanabból a bemeneti forrásból. - ProduceOnlyReferenceAssembly /
-refonly
: A teljes szerelvény helyett készítsen egy referenciaszerelvényt elsődleges kimenetként.
Hibakeresési típus
A DebugType beállítás hatására a fordító hibakeresési információkat hoz létre, és elhelyezi a kimeneti fájlban vagy fájlokban. A hibakeresési információk alapértelmezés szerint hozzáadva.
<DebugType>pdbonly</DebugType>
A C# 6.0-tól kezdődő összes fordítóverzió esetében nincs különbség a pdbonly és a teljes verzió között. Válassza a pdbonly lehetőséget. A .pdb fájl helyének módosításához lásd: PdbFile.
A következő értékek érvényesek:
Érték | Értelmezés |
---|---|
full |
Hibakeresési információk küldése a .pdb-fájlba az aktuális platform alapértelmezett formátumával: Windows: Windows pdb-fájl. Linux/macOS: Egy hordozható PDB-fájl . |
pdbonly |
Ugyanaz, mint full a . További információért tekintse meg az alábbi megjegyzést. |
portable |
Hibakeresési információk küldése a .pdb fájlba platformfüggetlen hordozható PDB-formátum használatával. |
embedded |
Hibakeresési információkat bocsát ki a .dll/.exe (a.pdb fájl nem jön létre) hordozható PDF-formátummal. |
Fontos
Az alábbi információk csak a C# 6.0-nál régebbi fordítókra vonatkoznak.
Ennek az elemnek az értéke lehet vagy full
pdbonly
. A teljes argumentum, amely akkor lép érvénybe, ha nem ad meg pdbonly értéket, lehetővé teszi, hogy hibakeresőt csatoljon a futó programhoz. A pdbonly megadása lehetővé teszi a forráskód hibakeresését, amikor a program a hibakeresőben van elindítva, de csak akkor jelenik meg az összeszerelő, ha a futó program hozzá van kapcsolva a hibakeresőhöz. Ezzel a beállítással hibakeresési buildeket hozhat létre. Ha a Teljes verziót használja, vegye figyelembe, hogy a JIT-optimalizált kód sebességére és méretére, valamint a teljes kód minőségére gyakorolt kis hatással van. A kiadási kód létrehozásához pdbonly vagy nincs PDB használata javasolt. A pdbonly és a full között az egyik különbség az, hogy a fordító teljes egészében kibocsát egyDebuggableAttribute, a JIT-fordító számára elérhető hibakeresési információt. Ezért hibaüzenet jelenik meg, ha a kód hamis értékre állítja a DebuggableAttribute készletet, ha megtelt. Az alkalmazások hibakeresési teljesítményének konfigurálásáról további információt a Kép könnyebb hibakeresése című témakörben talál.
Optimalizálás
Az Optimalizálási beállítás lehetővé teszi vagy letiltja a fordító által végzett optimalizálást, hogy a kimeneti fájl kisebb, gyorsabb és hatékonyabb legyen. Az Optimalizálási beállítás alapértelmezés szerint engedélyezve van a kiadás buildkonfigurációja esetében. Alapértelmezés szerint ki van kapcsolva hibakereséshez és bármilyen más buildkonfigurációhoz.
<Optimize>true</Optimize>
Az Optimalizálás lehetőséget a Projekt tulajdonságainak létrehozása lapon állíthatja be a Visual Studióban.
Az optimalizálás azt is jelzi, hogy a közös nyelvi futtatókörnyezet optimalizálja a kódot futásidőben. Alapértelmezés szerint az optimalizálás le van tiltva. Adja meg az Optimize+ elemet az optimalizálás engedélyezéséhez. Amikor egy szerelvény által használandó modult készít, használja ugyanazokat az Optimalizálás beállításokat, mint amelyeket a szerelvény használ. Az optimalizálás és a hibakeresési lehetőségek kombinálhatók.
Determinisztikus
A fordító olyan szerelvényt hoz létre, amelynek bájtonkénti kimenete azonos az azonos bemenetek fordításainál.
<Deterministic>true</Deterministic>
Alapértelmezés szerint a fordító egy adott bemenetkészletből származó kimenete egyedi, mivel a fordító hozzáad egy időbélyeget és egy MVID-t (a Module.ModuleVersionId. Alapvetően ez egy GUID, amely egyedileg azonosítja a modult és a verziót.) véletlenszerű számokból jön létre. <Deterministic>
A beállítással determinisztikus szerelvényt hozhat létre, amelynek bináris tartalma megegyezik a fordítások között, amíg a bemenet változatlan marad. Egy ilyen buildben az időbélyeg és az MVID mezők az összes fordítási bemenet kivonatából származó értékekre lesznek lecserélve. A fordító a determinizmust befolyásoló alábbi bemeneteket veszi figyelembe:
- Parancssori paraméterek sorozata.
- A fordító .rsp válaszfájljának tartalma.
- A használt fordító pontos verziója és a hivatkozott szerelvények.
- Az aktuális könyvtár elérési útja.
- A fordítónak közvetlenül vagy közvetve átadott összes fájl bináris tartalma, beleértve a következőket:
- Forrásfájlok
- Hivatkozott szerelvények
- Hivatkozott modulok
- Források
- Az erős névkulcsfájl
- @ válaszfájlok
- Elemzők
- Szabálykészletek
- Egyéb fájlok, amelyeket az elemzők használhatnak
- Az aktuális kultúra (azon nyelv esetében, amelyben a diagnosztikai és kivételüzenetek létre lettek hozva).
- Az alapértelmezett kódolás (vagy az aktuális kódlap), ha a kódolás nincs megadva.
- A fordító keresési útvonalán lévő fájlok létezése, nem létezése és tartalma (például by
-lib
vagy-recurse
). - A Common Language Runtime (CLR) platform, amelyen a fordító fut.
- Annak az értéknek az
%LIBPATH%
értéke, amely befolyásolhatja az elemző függőségeinek betöltését.
Determinisztikus fordítással megállapítható, hogy a bináris fájlok megbízható forrásból származnak-e. A determinisztikus kimenet akkor lehet hasznos, ha a forrás nyilvánosan elérhető. Azt is meghatározhatja, hogy a buildelési folyamat során használt bináris módosításoktól függő buildelési lépések.
ProduceOnlyReferenceAssembly
A ProduceOnlyReferenceAssembly beállítás azt jelzi, hogy elsődleges kimenetként egy referenciaszerelvénynek kell kimenetnek lennie implementálási szerelvény helyett. A ProduceOnlyReferenceAssembly paraméter csendesen letiltja a PDF-ek kimenetét, mivel a referenciaszerelvények nem hajthatók végre.
<ProduceOnlyReferenceAssembly>true</ProduceOnlyReferenceAssembly>
A referenciaszerelvények egy speciális szerelvénytípus. A referencia-szerelvények csak a tár nyilvános API-felületének megjelenítéséhez szükséges minimális mennyiségű metaadatot tartalmazzák. Az összes olyan tagra vonatkozó deklarációkat tartalmaznak, amelyek jelentősek a szerelvény buildelési eszközökben való hivatkozásakor, de kizárnak minden olyan tagi implementációt és magántagi deklarációt, amely nem befolyásolja az API-szerződésüket. További információ: Referenciaszerelvények.
A ProduceOnlyReferenceAssembly és a ProduceReferenceAssembly lehetőségek kölcsönösen kizárják egymást.