我正在尝试构建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。
答案 0 :(得分:0)
以上评论没有让我更进一步。
经过多次尝试后,我发现由于密钥中缺少私有部分,因此无法签名(呃)。
所以我决定通过在所有csproj文件中将以下true值替换为false来简单地删除签名。在visual studio中的所有项目中,在notepad ++中比用手动更快地批量替换。
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<DelaySign>true</DelaySign>
</PropertyGroup>
以上属性位于项目节点下。
删除后我可以编译和分发。
如果要通过Visual Studio IDE执行此操作,请右键单击项目,然后单击属性,然后转到“签名”选项卡。转身签约。