RestSharp强名不起作用

时间:2014-03-25 04:37:10

标签: restsharp strongname

我的应用程序要求是使用签名程序集。我使用Visual Studio 2012命令工具签署了RestSharp程序集。应用程序构建成功,但运行时,会出现以下错误:

  

无法加载文件或程序集'RestSharp,Version = 104.4.0.0,   Culture = neutral,PublicKeyToken = null'或其依赖项之一。一个   强名命的装配是必需的。 (HRESULT的例外情况:   0x80131044)

有没有解决方案?

3 个答案:

答案 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。

我希望这会有所帮助。