Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi beállítások szabályozzák a kódgenerálást a fordító által. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis látható 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. Az alapértelmezett érték a portable hibakeresési és a kiadási buildkonfigurációk esetében is, ami azt jelenti, hogy a PDB-fájlok alapértelmezés szerint minden konfigurációhoz létrejönnek.
<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. 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 közvetlenül a .dll/.exe fájlba helyez el (.pdb fájl nem jön létre) a hordozható PDB formátum használatával. |
none |
Ne készítsen PDB-fájlt. |
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 full vagy 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 ez hatással van a JIT-optimalizált kód sebességére és méretére, valamint kis mértékben a kódminőségre is a teljes használatakor. A kiadási kód létrehozásához javasolt a pdbonly vagy a PDB nélküli opció. A pdbonly és full közötti egyik különbség az, hogy full esetén a fordító kibocsát egy DebuggableAttribute, ami arra szolgál, hogy jelezze a JIT-fordítónak, hogy hibakeresési információ elérhető. Ezért hibaüzenet jelenik meg, ha a kód a DebuggableAttribute állítást hamisra állítja, amikor a teljes van használatban. 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.
PDB-létrehozás letiltása kiadási buildekhez
Ha el szeretné tiltani a PDB-fájlok létrehozását a kiadási buildekhez, miközben megtartja őket a hibakeresési buildekhez, adja hozzá a következő tulajdonságot a projektfájlhoz:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<DebugType>none</DebugType>
</PropertyGroup>
Alternatív megoldásként a Release buildok esetén állítsa be a DebugSymbolsfalse-re.
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
Feljegyzés
A .NET 8 és újabb verzióiban a(z) DebugSymbols érték false-re állítása a(z) nagyobb változásokra vonatkozó dokumentáció szerint le kell, hogy tiltsa a PDB-generációt. A PDB-generáció letiltásának legmegbízhatóbb módja azonban az, ha kifejezetten DebugType értéket none-ra állítjuk.
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 Optimalizálás lehetőséget 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 összeállítást hoz létre, amelynek kimenete bájtról bájtra azonos az egyező bemenetek esetén végzett fordítások során.
<Deterministic>true</Deterministic>
A modern .NET-projektek esetében a determinisztikus fordítás alapértelmezés szerint engedélyezve van (a Deterministic tulajdonság alapértelmezés szerint a truekövetkező). Ha a determinisztikus fordítás engedélyezve van, az időbélyeg és az MVID mezőket a rendszer az összes fordítási bemenet kivonatából származó értékekre cseréli, biztosítva az azonos bemenetek azonos bináris kimenetét.
Ha a determinisztikus fordítás le van tiltva (<Deterministic>false</Deterministic>), 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. 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
- Az adattárból kinyert forráshivatkozási adatok (például git commit SHA, adattár URL-címe stb.)
- 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 útvonalain megadott fájlok létezése, nem létezése és tartalma (például a
-libvagy-recurseáltal megadva). - Common Language Runtime (CLR) platform, amelyen a fordító fut.
- 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ő. Az is képes meghatározni, hogy a bináris módosításaitól függő építési lépések végrehajthatók-e az építési folyamat során.
CsakReferenciagyüjteménytÁllítElő
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.