C# 编译特定版本的DotNetOpenAuth,只需一个小改动,签名问题

C# 编译特定版本的DotNetOpenAuth,只需一个小改动,签名问题,c#,.net,dotnetopenauth,C#,.net,Dotnetopenauth,我正在尝试构建版本4.3.0。但我得到了一个已知的错误: 无法加载文件或程序集“DotNetOpenAuth.Core”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名。(来自HRESULT的异常:0x80131045) 我尝试了几种选择,但没有成功 问题是我必须与OpenId提供者联系,他们告诉我除非我更改受保护字符串GetSignature方法,否则它将无法工作 该行: MessageDictionary dictionary = this.C

我正在尝试构建版本4.3.0。但我得到了一个已知的错误:

无法加载文件或程序集“DotNetOpenAuth.Core”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名。(来自HRESULT的异常:0x80131045)

我尝试了几种选择,但没有成功

问题是我必须与OpenId提供者联系,他们告诉我除非我更改
受保护字符串GetSignature
方法,否则它将无法工作

该行:

MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage);
根据他们的意见,必须改为:

  MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage, true);
在这方面,有人建议,可以解释如何编译它。还有人会这样做吗?大量的谷歌搜索并没有让我找到解决方案


有人能帮我吗?我知道OpenID2.0现在已经过时,但提供商不会很快切换到OpenConnect。

以上评论没有让我进一步了解

经过更多的尝试,我发现由于密钥中缺少私有部分,因此无法进行签名(duh)

因此,我决定通过将所有csproj文件中的以下true值替换为false来删除签名。在VisualStudio的所有项目中,使用notepad++进行大规模替换比使用手动替换更快

<PropertyGroup>
   <SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
   <DelaySign>true</DelaySign>
</PropertyGroup>

真的
真的
以上属性位于“项目”节点下

删除后,我可以编译和分发

如果要通过VisualStudioIDE执行此操作,请右键单击项目,然后单击“属性”并转到“签名”选项卡。轮到签名了。

看看这个