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 fulla . 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 fullpdbonly. 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.