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 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 ö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.