编译特定版本的DotNetOpenAuth只需稍加改动,签署问题

时间:2016-07-13 12:15:14

标签: c# .net dotnetopenauth

我正在尝试构建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中有人建议,可以解释如何编译它。有人还能这样做吗?许多谷歌搜索并没有让我找到解决方案。

任何人都可以帮我这个吗?我知道OpenId 2.0现在已经过时,但提供商不会很快切换到Open Connect。

1 个答案:

答案 0 :(得分:0)

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

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

所以我决定通过在所有csproj文件中将以下true值替换为false来简单地删除签名。在visual studio中的所有项目中,在notepad ++中比用手动更快地批量替换。

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

以上属性位于项目节点下。

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

如果要通过Visual Studio IDE执行此操作,请右键单击项目,然后单击属性,然后转到“签名”选项卡。转身签约。