Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# 具有强命名二进制文件的CefSharp_C#_Cefsharp_Strongname - Fatal编程技术网

C# 具有强命名二进制文件的CefSharp

C# 具有强命名二进制文件的CefSharp,c#,cefsharp,strongname,C#,Cefsharp,Strongname,在启用了.NET Framework注册表项AllowStrongNameBypass的计算机上,一切都可以运行。 但是,我们要求在部署的环境中禁用AllowStrongNameBypass 我们需要有CefSharp.BrowserSubProcess.exe及其非托管依赖项强名称(最好不用自己构建CefSharp) 作为测试,我们尝试自己通过使用ildasm.exe反汇编CefSharp.BrowserSubProcess.exe并使用ilasm.exe和使用sn.exe生成的密钥来重新组装

在启用了.NET Framework注册表项
AllowStrongNameBypass
的计算机上,一切都可以运行。 但是,我们要求在部署的环境中禁用
AllowStrongNameBypass

我们需要有
CefSharp.BrowserSubProcess.exe及其非托管依赖项强名称(最好不用自己构建CefSharp)

作为测试,我们尝试自己通过使用
ildasm.exe
反汇编
CefSharp.BrowserSubProcess.exe
并使用
ilasm.exe
和使用
sn.exe
生成的密钥来重新组装程序集强名称密钥。不幸的是,这在
MethodAccessException
中失败


是否有可用版本的CefSharp,其中程序集是强名称的,或者有解决此问题的方法?

CefSharp似乎有一些无效的强名称程序集。正如@Fizz指出的那样,32位平台下的
CefSharp.BrowserSubProcess.exe
的后期构建步骤是造成这种情况的原因

使用CefSharp GitHub repo中提供的CefSharp.snk密钥重新签名有问题的程序集。您可以使用以下命令对其重新签名:


sn.exe-R CefSharp.BrowserSubProcess.exe[CefSharp key]

我从NuGet安装了v51.0.0,运行了
sn-T“[dll]”
,我检查的dll(包括
CefSharp.BrowserSubProcess.exe
)具有强名称。如果您的版本没有尝试查找发生
MethodAccessException
的原因,我找到了这篇文章:@dukedukes我在v51.0.0二进制文件上看到的是命令
sn.exe-Tp CefSharp.BrowserSubProcess.exe
显示公钥(我也可以通过
ildasm
看到)。尽管命令
sn.exe-vf-CefSharp.BrowserSubProcess.exe
返回以下错误:
未能验证程序集--assembly'CefSharp.BrowserSubProcess.exe'的强名称验证失败。
我刚才尝试了
sn-vf-CefSharp.BrowserSubProcess.exe
,看到了相同的东西,但只针对32位,64位验证正确。我尝试了32位和64位版本的sn.exe。一个选项可能是使用CefSharp GitHub repo中可用的
CefSharp.snk
键重新指定程序集,然后对出现此问题的每个程序集重复此操作。似乎x86 build
CefSharp.BrowserSubProcess.exe
二进制文件的生成后步骤使用
/LargeAddressware
标志调用
editbin.exe
。此标志似乎破坏了强名称验证。另外@dukedukes是正确的,使用
sn.exe-R CefSharp.BrowserSubProcess.exe[CefSharp key]
似乎使强名称有效(根据
sn.exe-vf
)@诸位诸位,你们不妨把它写下来作为一个答案。好发现。仅供参考,我在CefSharp的GitHub页面上提交了一期。