我的应用程序要求是使用签名程序集。我使用Visual Studio 2012命令工具签署了RestSharp程序集。应用程序构建成功,但运行时,会出现以下错误:
无法加载文件或程序集'RestSharp,Version = 104.4.0.0, Culture = neutral,PublicKeyToken = null'或其依赖项之一。一个 强名命的装配是必需的。 (HRESULT的例外情况: 0x80131044)
有没有解决方案?
答案 0 :(得分:7)
提醒一下,Nuget中有RestSharp(RestSharpSigned)的签名版本。
答案 1 :(得分:2)
博客http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/ 帮我解决了这个问题。 实际上我在我的项目中使用twilio.api.dll而twilio.api.dll正在引用RestSharp.dll。现在将RestSharp作为“强名称”后,需要在Twilio程序集中输入公钥标记,以便它可以访问RestSharp。
现在问题已解决。
答案 2 :(得分:0)
有一种方法可以在现有dll中添加强名称。 您只需要sn.exe,ildasm.exe和ilasm.exe 这些是Microsoft设计的.NET Framework工具:https://docs.microsoft.com/en-us/dotnet/framework/tools/。 要运行这些工具,请使用Visual Studio开发人员命令提示符。
步骤1: 您应该使用sn.exe创建一个密钥文件:
sn.exe -k C:\IAmWorkingHere\KeyFile1.snk
一个KeyFile1.snk已创建到C:\ IAmWorkingHere文件夹。我们将在第3步中使用它。
步骤2: 使用ildasm.exe从dll中“提取” IL代码,资源等。
ildasm.exe /out c:\IAmWorkingHere\RestSharp.il
这取决于您的RestSharp版本,但是对我来说,创建了2个文件 RestSharp.il ,其中包含文本格式的IL代码和 RestSharp.res 包含dll资源信息的文件。
第3步 (如果要确保其安全,请重命名原始的RestSharp.dll),然后使用ilasm.exe创建强大的命名为RestSharp.dll
ilasm.exe c:\IAmWorkingHere\RestSharp.il /dll /key=c:\IAmWorkingHere\KeyFile1.snk /resource:c:\IAmWorkingHere\RestSharp.res
然后创建了您的强名叫RestSharp.dll。
我希望这会有所帮助。