Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 受信任的pfx证书不使用InternalsVisibleTo属性_C#_Pfx_Internalsvisibleto - Fatal编程技术网

C# 受信任的pfx证书不使用InternalsVisibleTo属性

C# 受信任的pfx证书不使用InternalsVisibleTo属性,c#,pfx,internalsvisibleto,C#,Pfx,Internalsvisibleto,我从Comodo CA获得了一个受信任的证书,很难让它与InternalsVisibleTo属性一起工作。 我收到一个警告,程序集无效,无法解析。 我使用X509Certificate.GetPublicKeyString()检索了公钥,并将其放入assemblyinfo [assembly:System.Runtime.CompilerServices.InternalsVisibleTo("Assemblyname,PublicKey=MyPublicKey"] 到目前为止,我们使用了一个

我从Comodo CA获得了一个受信任的证书,很难让它与InternalsVisibleTo属性一起工作。 我收到一个警告,程序集无效,无法解析。 我使用X509Certificate.GetPublicKeyString()检索了公钥,并将其放入assemblyinfo

[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("Assemblyname,PublicKey=MyPublicKey"]
到目前为止,我们使用了一个不受信任的证书,它可以正常工作。我注意到受信任证书(.pfx)的公钥长度为540个字符,而我们的不受信任证书(.snk)仅为320个字符

我的错误在哪里


此外,我不能使用projectsettings来选择我的.pfx进行签名。后期构建工作。当使用projectsettings时,它告诉我找不到证书和私钥。

如果不亲自尝试,很难判断问题出在哪里。可能
X509Certificate.GetPublicKeyString()
返回的公钥格式不是
InternalsVisibleTo
期望的格式。但是,您可以使用
sn
(强名称工具),该工具专为处理强名称键而设计

它位于
C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin
(SDK\system drive等的数量可能会有所不同,但您可以理解)

首先使用此命令导出公钥(如果pfx受密码保护,将询问密码):

然后通过以下方式将公钥导出为字符串:

sn -tp YourComodoCert.snk > YourComodoCert_pub.txt

用文本编辑器打开您的Comodocert_pub.txt,在那里您会发现“公钥是”部分-从那里复制密钥并在
内部可视中使用

谢谢,我已经通过sn.exe尝试过了,因为我没有提到它。在此处获取该错误:“未能将密钥转换为令牌--程序集公钥无效。sn-tp-我加载了一个程序集,该程序集通过该证书的后期生成进行了签名,它告诉我该公钥的长度为0字节。”。程序集肯定是用该证书签名的,在文件系统的属性中显示一个数字符号。但它似乎没有一个强有力的名字和公钥签署。对我来说没有意义。那你如何签署postbuild?也许这部分错了。好吧,我想我可能理解错了。我使用SignTool.exe在我的后期生成中使用我的受信任证书对其进行签名。但在我看来,这与您可以在Projectsettings中指定的签名不同?我现在在Projectsettings中保留了使用旧的不受信任证书进行签名的过程,并在之后运行了使用受信任证书进行签名的后期构建。我将旧公钥保留在InternalsVisibleTo属性中。我得到了一个数字签名,现在显示在文件->属性中,并且该程序集上现在有一个带有公钥的强名称。SignTool.exe是完全不同的工具-它用于代码签名,与强名称无关。你需要我在回答中提到的“sn.exe”工具。
sn -tp YourComodoCert.snk > YourComodoCert_pub.txt