Útmutató: Szerelvény aláírása erős névvel
Feljegyzés
Bár a .NET Core támogatja az erős nevű szerelvényeket, és a .NET Core-kódtár összes szerelvénye aláírt, a külső szerelvények többségének nincs szüksége erős nevekre. További információ: Erős névaláírás a GitHubon.
Egy erős névvel rendelkező szerelvény aláírásának számos módja van:
- Az Erős buildelnevezés> lap használatával a Projekttervezőben a Visual Studióban egy projekthez. Ez a legegyszerűbb és legkényelmesebb módja annak, hogy erős névvel írjon alá egy szerelvényt.
- A Assembly Linkerrel (Al.exe) összekapcsolhat egy .NET-keretrendszer kódmodult (egy .netmodule-fájlt) egy kulcsfájllal.
- Szerelvényattribútumok használatával szúrja be az erős névadatokat a kódba. Használhatja az AssemblyKeyFileAttribute attribútumot, AssemblyKeyNameAttribute attól függően, hogy hol található a használni kívánt kulcsfájl.
- A fordító beállításainak használatával.
Egy erős névvel rendelkező szerelvény aláírásához titkosítási kulcspárra van szükség. A kulcspárok létrehozásával kapcsolatos további információkért lásd : Nyilvános-privát kulcspár létrehozása.
Erős névvel rendelkező szerelvény létrehozása és aláírása a Visual Studióval
- A Megoldáskezelő nyissa meg a projekt helyi menüjét, majd válassza a Tulajdonságok lehetőséget.
- A Build lapon egy erős elnevezési csomópontot talál.
- Jelölje be az Szerelvény aláírása jelölőnégyzetet, amely kibontja a beállításokat.
- A Tallózás gombra kattintva válasszon egy erős névkulcsfájl elérési útját.
Feljegyzés
A szerelvény aláírásának késleltetéséhez válasszon egy nyilvános kulcsfájlt.
Erős névvel rendelkező szerelvény létrehozása és aláírása a Assembly Linker használatával
Nyissa meg a Visual Studio fejlesztői parancssorát vagy a Visual Studio Developer PowerShellt, és írja be a következő parancsot:
al /out:<assemblyName><moduleName> /keyfile:<keyfileName >
Ahol:
- assemblyName annak az erősen aláírt szerelvénynek ( .dll vagy .exe fájlnak) a neve, amelyet a Assembly Linker bocsát ki.
- A moduleName egy .NET-keretrendszer kódmodul (.netmodule fájl) neve, amely egy vagy több típust tartalmaz. .netmodule-fájlt úgy hozhat létre, hogy a kódot a C# vagy a
/target:module
Visual Basic kapcsolóval összeállítja. - A keyfileName annak a tárolónak vagy fájlnak a neve, amely a kulcspárt tartalmazza. Az Assembly Linker az aktuális könyvtárhoz viszonyított relatív elérési utat értelmezi.
Az alábbi példa az sgKey.snk kulcsfájllal aláírja a szerelvény MyAssembly.dll egy erős névvel.
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
Az eszközzel kapcsolatos további információkért lásd : Assembly Linker.
Erős névvel rendelkező szerelvény aláírása attribútumokkal
Adja hozzá a System.Reflection.AssemblyKeyFileAttribute forráskódfájlt vagy AssemblyKeyNameAttribute attribútumot, és adja meg annak a fájlnak vagy tárolónak a nevét, amely tartalmazza a szerelvény erős névvel való aláírásakor használni kívánt kulcspárt.
A forráskódfájl fordítása normál módon.
Feljegyzés
A C# és a Visual Basic fordítói hibát jeleznek a fordítók számára (CS1699 és BC41008), amikor a forráskódban vagy attribútumban AssemblyKeyFileAttribute AssemblyKeyNameAttribute találkoznak. Figyelmen kívül hagyhatja a figyelmeztetéseket.
Az alábbi példa egy AssemblyKeyFileAttribute keyfile.snk nevű kulcsfájllal rendelkező attribútumot használ, amely abban a könyvtárban található, amelyben a szerelvény fordítása történik.
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
A forrásfájl összeállításakor késleltetheti a szerelvény aláírását is. További információ: Szerelvény késleltetése.
Erős névvel rendelkező szerelvény aláírása a fordító használatával
Állítsa össze a forráskódfájlt vagy -fájlokat a C# és a Visual Basic vagy a /keyfile
/delaysign
/KEYFILE
/DELAYSIGN
C++-ban a fordító vagy fordító beállítással. A beállítás neve után adjon hozzá egy kettőspontot és a kulcsfájl nevét. Parancssori fordítók használata esetén a kulcsfájlt a forráskódfájlokat tartalmazó könyvtárba másolhatja.
A késleltetési aláírásról további információt a szerelvény késleltetése című témakörben talál.
Az alábbi példa a C#-fordítót használja, és az sgKey.snk kulcsfájl használatával aláírja a szerelvény UtilityLibrary.dll egy erős névvel.
csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk