>

onsdag 8 maj 2013

Referenced assembly does not have a strong name

Vill du signera ditt program har du ett beroende på att alla referenser behöver vara signerade eller så kallade strong named. Visual Studio kommer att tala om vilka assemblys som inte är signerade genom ett meddelande i Error List: ’Referenced assembly x does not have a strong name’.
För dina egna assemblys är detta inget problem då du bara kan signera dem och kompilera om dem. För tredjeparts komponenter blir det lite svårare men det finns några kommandon du kan köra för att skapa nya signerade dll:er

Börja med att öppna ’Visual Studio Commando Promt’/’Developer Commando Promt’. Navigera sedan till platsen för dll filen (du måste inte men du slipper skriva hela sökvägen). Du behöver nu göra om filen till ett okompilerat format med hjälp av nedanstående kommando, förutsatt att filen heter filen.dll. Kommandot kommer att skapa flera filer, när du är klar med sista kommandot kan du ta bort alla dessa filer.
ildasm /all /output=filen.il filen.dll

Sedan behöver du en nyckel för själva signeringen, har du inte kan du skapa en med kommandot:
sn –k keyName.snk

Du avslutar med att skapa den signerade dll:en. Notera att nu används ilasm inte ildasm.
ilasm /dll filen.il /key=keyName.snk /output=filen.signed.dll

Du kan nu ta bort referensen till den gamla filen och lägga till den nya istället i ditt projekt.

Inga kommentarer:

Skicka en kommentar