A fordító kimenetét vezérlő C#-fordító beállításai
Az alábbi beállítások szabályozzák a fordító kimenetének létrehozását.
MSBuild | csc.exe | Leírás |
---|---|---|
DocumentationFile | -doc: |
XML-dokumentumfájl létrehozása megjegyzésekből /// . |
OutputAssembly | -out: |
Adja meg a kimeneti szerelvényfájlt. |
PlatformTarget | -platform: |
Adja meg a célplatform processzorát. |
ProduceReferenceAssembly | -refout: |
Hozzon létre egy referencia-szerelvényt. |
TargetType | -target: |
Adja meg a kimeneti szerelvény típusát. |
DocumentationFile
A DocumentationFile beállítással dokumentációs megjegyzéseket helyezhet el egy XML-fájlban. Ha többet szeretne megtudni a kód dokumentálásáról, olvassa el az Ajánlott címkék a dokumentáció megjegyzéseihez című témakört. Az érték megadja a kimeneti XML-fájl elérési útját. Az XML-fájl a fordítás forráskódfájljaiban található megjegyzéseket tartalmazza.
<DocumentationFile>path/to/file.xml</DocumentationFile>
A fő vagy legfelső szintű utasításokat tartalmazó forráskódfájl először az XML-be kerül. Gyakran érdemes használni a létrehozott .xml fájlt az IntelliSense használatával. A .xml fájlnévnek meg kell egyeznie a szerelvény nevével. A .xml fájlnak ugyanabban a könyvtárban kell lennie, mint a szerelvénynek. Amikor egy Visual Studio-projektben hivatkozik a szerelvényre, a .xml fájl is megtalálható. A kód megjegyzéseinek létrehozásával kapcsolatos további információkért tekintse meg a kód megjegyzéseinek megadását ismertető témakört. Ha nem fordítja le a következőt<TargetType:Module>
, file
a kimeneti fájl szerelvényjegyzékét tartalmazó fájl nevét és </assembly>
címkéit fogja tartalmazni<assembly>
. Példák : Az XML dokumentációs funkcióinak használata.
Feljegyzés
A DocumentationFile beállítás a projekt összes fájlára vonatkozik. Ha le szeretné tiltani egy adott fájl vagy kódszakasz dokumentációs megjegyzéseivel kapcsolatos figyelmeztetéseket, használja #pragma figyelmeztetést.
Ez a beállítás bármely .NET SDK-stílusú projektben használható. További információ: DocumentationFile tulajdonság.
OutputAssembly
Az OutputAssembly beállítás a kimeneti fájl nevét adja meg. A kimeneti elérési út azt a mappát adja meg, amelyben a fordító kimenete el van helyezve.
<OutputAssembly>folder</OutputAssembly>
Adja meg a létrehozni kívánt fájl teljes nevét és bővítményét. Ha nem adja meg a kimeneti fájl nevét, az MSBuild a projekt nevét használja a kimeneti szerelvény nevének megadásához. A régi stílusú projektek a következő szabályokat használják:
- Egy .exe a metódust vagy legfelső szintű utasításokat tartalmazó forráskódfájlból veszi fel a
Main
nevét. - Egy .dll vagy .netmodule az első forráskódfájlból veszi fel a nevét.
A fordítás részeként létrehozott modulok a fordításban is előállított szerelvényhez kapcsolódó fájlokká válnak. A ildasm.exe használatával megtekintheti a szerelvényjegyzéket a társított fájlok megtekintéséhez.
Az OutputAssembly fordítóbeállításra azért van szükség, hogy egy exe egy barátszerelvény célpontja legyen.
PlatformTarget
Megadja, hogy a CLR melyik verziója futtathatja a szerelvényt.
<PlatformTarget>anycpu</PlatformTarget>
- az anycpu (alapértelmezett) lefordítja a szerelvényt, hogy bármilyen platformon fusson. Az alkalmazás 64 bites folyamatként fut, amikor csak lehetséges, és visszaesik a 32 bitesre, ha csak ez a mód érhető el.
- az anycpu32bitpreferred lefordítja a szerelvényt, hogy bármilyen platformon fusson. Az alkalmazás 32 bites módban fut a 64 bites és a 32 bites alkalmazásokat egyaránt támogató rendszereken. Ezt a beállítást csak a 4.5-ös vagy újabb .NET-keretrendszer megcélzott projekteknél adhatja meg.
- Az ARM lefordítja a szerelvényt egy speciális RISC-processzorral (ARM) rendelkező számítógépen való futtatáshoz.
- Az ARM64 úgy állítja össze a szerelvényt, hogy a 64 bites CLR futtassa az A64 utasításkészletet támogató Advanced RISC Machine (ARM) processzorral rendelkező számítógépen.
- Az x64 lefordítja a szerelvényt úgy, hogy a 64 bites CLR futtassa az AMD64 vagy EM64T utasításkészletet támogató számítógépen.
- Az x86 lefordítja a szerelvényt a 32 bites, x86-kompatibilis CLR futtatásához.
- Az Itanium úgy állítja össze a szerelvényt, hogy a 64 bites CLR egy Itanium processzorral rendelkező számítógépen futtassa.
64 bites Windows operációs rendszeren:
- Az x86-tal lefordított szerelvények a WOW64 alatt futó 32 bites CLR-en futnak.
- Az anycpu-val lefordított DLL ugyanazon a CLR-n fut, mint a folyamat, amelybe betölti.
- A 64 bites CLR-n az anycpu-val lefordított végrehajtható fájlok.
- Az anycpu32bitpreferred parancsmaggal lefordított végrehajtható elemek a 32 bites CLR-n.
Az anycpu32bitpreferred beállítás csak végrehajtható (.EXE) fájlokra érvényes, és .NET-keretrendszer 4.5-ös vagy újabb verziót igényel. További információ a Windows 64 bites operációs rendszeren futó alkalmazások fejlesztéséről: 64 bites alkalmazások.
A PlatformTarget beállítást a projekt Build properties (Build properties) lapján állíthatja be a Visual Studióban.
Az anycpu viselkedése további árnyalatokkal rendelkezik a .NET Core- és .NET 5-ös és újabb kiadásokban. Az anycpu beállításakor tegye közzé az alkalmazást, és hajtsa végre az x86 dotnet.exe
vagy az x64 dotnet.exe
használatával. Önálló alkalmazások esetén a lépés a dotnet publish
végrehajtható fájlokat a konfigurálható RID-hez csomagolja.
ProduceReferenceAssembly
A ProduceReferenceAssembly beállítás szabályozza, hogy a fordító referenciaszerelvényeket állít-e elő.
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
A referenciaszerelvények egy speciális szerelvénytípus, amely csak a tár nyilvános API-felületének megjelenítéséhez szükséges minimális mennyiségű metaadatot tartalmazza. Deklarációkat tartalmaznak minden olyan tag számára, amely jelentős a szerelvény buildelési eszközökben való hivatkozásakor. A referencia-szerelvények kizárják az összes tagmegvalósítást és a magántagok nyilatkozatait. Ezeknek a tagoknak nincs megfigyelhető hatása az API-szerződésükre. További információ: Referenciaszerelvények a .NET-útmutatóban.
A ProduceReferenceAssembly és a ProduceOnlyReferenceAssembly lehetőségek kölcsönösen kizárják egymást.
Általában nem kell közvetlenül referencia-szerelvényfájlokkal dolgoznia. Alapértelmezés szerint a referenciaszerelvények a köztes útvonal almappájában ref
jönnek létre (pl. obj/ref/
). Ha inkább a kimeneti könyvtár alatt szeretné létrehozni őket (azaz bin/ref/
) ProduceReferenceAssemblyInOutDir
true
a projektben.
A .NET SDK 6.0.200 olyan módosítást hajtott végre, amely alapértelmezés szerint áthelyezte a referenciaszerelvényeket a kimeneti könyvtárból a köztes könyvtárba.
TargetType
A TargetType fordítóbeállítás az alábbi űrlapok egyikében adható meg:
- kódtár: kódtár létrehozása. a kódtár az alapértelmezett érték.
- exe: .exe fájl létrehozása.
- modul létrehozásához.
- winexe egy Windows-program létrehozásához.
- winmdobj egy köztes .winmdobj fájl létrehozásához.
- appcontainerexe egy .exe-fájl létrehozásához Windows 8.x Áruházbeli alkalmazásokhoz.
Feljegyzés
A .NET-keretrendszer célok esetében, ha nem ad meg modult, ez a beállítás egy .NET-keretrendszer szerelvényjegyzéket helyez el egy kimeneti fájlban. További információ: Szerelvények a .NET-ben és a Common Attributesben.
<TargetType>library</TargetType>
A fordító fordításonként csak egy szerelvényjegyzéket hoz létre. A fordításban lévő összes fájlra vonatkozó információk a szerelvényjegyzékben találhatók. Ha több kimeneti fájlt hoz létre a parancssorban, csak egy szerelvényjegyzék hozható létre, és be kell lépnie a parancssorban megadott első kimeneti fájlba.
Ha szerelvényt hoz létre, jelezheti, hogy a kód egésze vagy egy része CLS-kompatibilis az CLSCompliantAttribute attribútummal.
kódtár
A kódtár beállítás hatására a fordító dinamikus csatolású kódtárat (DLL) hoz létre végrehajtható fájl (EXE) helyett. A DLL a .dll kiterjesztéssel jön létre. Ha az OutputAssembly beállítás másként nem van megadva, a kimeneti fájl neve az első bemeneti fájl nevét veszi fel. .dll-fájl létrehozásakor nincs szükség metódusraMain
.
exe
Az exe beállítás hatására a fordító végrehajtható (EXE) konzolalkalmazást hoz létre. A végrehajtható fájl a .exe kiterjesztéssel jön létre. A Winexe használatával végrehajtható Windows-programot hozhat létre. Ha az OutputAssembly beállítás másként nem rendelkezik, a kimeneti fájl neve a belépési pontot tartalmazó bemeneti fájl nevét veszi fel (fő metódus vagy legfelső szintű utasítások). Egy és csak egy belépési pont szükséges a forráskódfájlokban, amelyek egy .exe fájlba vannak lefordítva. A StartupObject fordítóbeállítással megadhatja, hogy melyik osztály tartalmazza a Main
metódust Main
olyan esetekben, amikor a kód egy metódussal több osztályt tartalmaz.
modul
Ez a beállítás miatt a fordító nem hoz létre szerelvényjegyzéket. Alapértelmezés szerint az ezzel a beállítással létrehozott kimeneti fájl kiterjesztése .netmodule lesz. A .NET-futtatókörnyezet nem tölthető be olyan fájlba, amely nem rendelkezik szerelvényjegyzéktel. Az ilyen fájl azonban az AddModules használatával beépíthető egy szerelvény szerelvényjegyzékébe. Ha egyetlen fordításban több modul is létrejön, az egyik modul belső típusai a fordítás más moduljai számára is elérhetők lesznek. Ha az egyik modul kódja egy másik modulban típusokra hivatkozikinternal
, akkor mindkét modult be kell építeni egy szerelvényjegyzékbe az AddModules használatával. A Modul létrehozása nem támogatott a Visual Studio fejlesztői környezetében.
borxa
A winexe beállítás hatására a fordító végrehajtható (EXE) Windows-programot hoz létre. A végrehajtható fájl a .exe kiterjesztéssel jön létre. A Windows-programok felhasználói felületet biztosítanak a .NET-kódtárból vagy a Windows API-kból. Az exe használatával hozzon létre egy konzolalkalmazást. Ha az OutputAssembly beállítás másként nem rendelkezik , a kimeneti fájl neve a metódust tartalmazó Main
bemeneti fájl nevét veszi fel. Az .exe fájlba lefordított forráskódfájlokban csak egy Main
metódusra van szükség. A StartupObject beállítással megadhatja, hogy melyik osztály tartalmazza a Main
metódust Main
olyan esetekben, amikor a kód egy metódussal több osztályt tartalmaz.
winmdobj
Ha a winmdobj lehetőséget használja, a fordító létrehoz egy köztes .winmdobj fájlt, amelyet konvertálhat Windows-futtatókörnyezet bináris (.winmd) fájllá. A .winmd fájlt a felügyelt nyelvi programok mellett JavaScript- és C++-programok is használhatják.
A winmdobj beállítás jelzi a fordítónak, hogy közbenső modulra van szükség. A .winmdobj fájl ezután az exportálási WinMDExp eszközzel táplálható egy Windows-metaadatfájl (.winmd) létrehozásához. A .winmd fájl tartalmazza az eredeti kódtárból származó kódot és a JavaScript vagy a C++ által használt WinMD-metaadatokat, valamint a Windows-futtatókörnyezet. A winmdobj fordítóbeállítással lefordított fájl kimenete csak a WimMDExp exportálási eszköz bemeneteként használható. A .winmdobj fájlra nem hivatkozik közvetlenül. Ha nem használja az OutputAssembly beállítást, a kimeneti fájl neve az első bemeneti fájl nevét veszi fel. Main
Nincs szükség metódusra.
appcontainerexe
Ha az appcontainerexe fordítóbeállítást használja, a fordító létrehoz egy windowsos végrehajtható (.exe) fájlt, amelyet egy alkalmazástárolóban kell futtatni. Ez a lehetőség egyenértékű a -target:winexe beállítással, de Windows 8.x Áruházbeli alkalmazásokhoz készült.
Ha azt szeretné, hogy az alkalmazás egy alkalmazástárolóban fusson, ez a beállítás beállít egy kicsit a Hordozható végrehajtható (PE) fájlban. Ha a bit be van állítva, hiba történik, ha a CreateProcess metódus egy alkalmazástárolón kívül próbálja elindítani a végrehajtható fájlt. Ha nem használja az OutputAssembly beállítást, a kimeneti fájl neve a metódust tartalmazó Main
bemeneti fájl nevét veszi fel.