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.
A "compiler_option" vagy a megfelelő projektbeállítások használata a "attribute_name" helyett
A szerelvény aláírásához meg kell adni egy kulcsfájlt. A C# 2.0 előtt a kulcsfájlt CLR-attribútumokkal adta meg a forráskódban. Ezek az attribútumok elavultak.
A C# 2.0-tól kezdve a Project Tervező aláíró lapjával vagy a szerelvény-hivatkozással kell megadnia a kulcsfájlt.
A Project Tervező aláíró oldala az előnyben részesített módszer; további információt az Aláíró lap, a Project Tervező és a Szerelvény és a Jegyzék-aláírás kezelése című témakörben talál.
Az útmutató: Az erős névvel rendelkező szerelvény aláírása a következő fordítóbeállításokat használja:
KeyFile (C# Compiler Options) attribútum AssemblyKeyFileAttribute helyett.
KeyContainer (C# Compiler Options) helyett AssemblyKeyNameAttribute.
DelaySign (C# Compiler Options) helyett AssemblyDelaySignAttribute.
Ezek az attribútumok a következő okok miatt elavultak:
Biztonsági problémákat észleltek a fordító által létrehozott bináris fájlokba beágyazott attribútumok miatt. Mindenki, aki a bináris volt, a kulcsokat is tárolta benne.
A használhatósággal kapcsolatos problémákat az okozta, hogy az attribútumokban megadott elérési út az aktuális munkakönyvtárhoz volt viszonyítva, ami az integrált fejlesztési környezetben (IDE) vagy a kimeneti könyvtárban változhatott. Így a legtöbb esetben a kulcsfájl valószínűleg .. \\.. \\mykey.snk. Az attribútumok megnehezítik a projektrendszer számára a műholdas szerelvények megfelelő aláírását. Ha ezen attribútumok helyett a fordítóbeállításokat használja, használhatja a kulcs teljes elérési útját és fájlnevét anélkül, hogy bármi beágyazódna a kimeneti fájlba; a projektrendszer és a forráskód-vezérlési rendszer megfelelően módosíthatja ezt a teljes útvonalat a projektek áthelyezésekor; a projektrendszer fenntarthatja a kulcsfájl projekt relatív elérési útját, és továbbra is teljes elérési utat adhat át a fordítónak; más buildprogramok könnyebben aláírhatják a kimeneteket úgy, hogy a megfelelő elérési utat közvetlenül a fordítónak adják át ahelyett, hogy a megfelelő attribútumokkal rendelkező forrásfájlt hoznak létre.
Az attribútumok ismerős szerelvényekkel való használata akadályozhatja a fordító hatékonyságát. Ha attribútumokat használ, a fordító nem tudja, mi a kulcs, amikor el kell döntenie, hogy barátságot ad-e vagy sem, ezért meg kell tippelnie. A fordítás végén a fordító képes ellenőrizni a találgatást, ha már ismeri a kulcsot. Ha a kulcsfájl egy fordítóbeállítással van megadva, a fordító azonnal eldöntheti, hogy barátságot kíván-e adni.
Példa
Az alábbi minta a CS1699-et hozza létre. A hiba megoldásához távolítsa el az attribútumot, és fordítás a /delaysign használatával.
// CS1699.cs
// compile with: /target:library
[assembly:System.Reflection.AssemblyDelaySign(true)] // CS1699