编译特定版本的 DotNetOpenAuth 并进行小改动,签名问题

Compiling specific version of DotNetOpenAuth with a small change, signing issues

我正在尝试构建 4.3.0 版本。但是我收到了已知错误:

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

我尝试了几个选项,但没有成功。

问题是我必须与 OpenId 提供商关联,他们告诉我除非我更改 protected string GetSignature 方法,否则它不会工作。

行:

MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage);

根据他们必须更改为:

  MessageDictionary dictionary = this.Channel.MessageDescriptions.GetAccessor(signedMessage, true);

在这个question中提出了建议,可以解释如何编译它。还有人可以这样做吗?多次 google 搜索都没有找到解决方案。

谁能帮我解决这个问题?我知道 OpenId 2.0 现在已经过时了,但提供商不会很快切换到 Open Connect。

以上评论没有让我更进一步。

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

所以我决定通过将所有 csproj 文件中的以下 true 值替换为 false 来简单地删除签名。在 visual studio.

中的所有项目中,在 notepad++ 中批量替换比手动替换更快
<PropertyGroup>
   <SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
   <DelaySign>true</DelaySign>
</PropertyGroup>

以上属性在项目节点下。

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

如果您想通过 Visual Studio IDE 来完成,请右键单击您的项目,然后选择“属性”并转到“签名”选项卡。轮到签名了。