启用LARGEADDRESSAWARE后,强名称验证失败



我正在构建一个c#可执行文件,必须构建为32位应用程序(由于其他环境限制)。作为构建后的步骤,我使用editbin.exe LARGEADDRESSAWARE来允许32位应用程序使用超过2GB的内存;尽管我注意到这破坏了强名称验证。

执行editbin.exe命令前先执行sn.exe -vf命令验证强名称:

sn.exe -vf [my exe]

输出:Assembly '[my exe]' is valid

然后我运行editbin.exe /LARGEADDRESSAWARE [my exe],它只是退出没有任何消息。我通过dumpbin /headers [my exe]检查头来验证它是否可以使用超过2GB。

最后,重新运行sn.exe命令,得到以下输出:

Failed to verify assembly -- Strong name validation failed for assembly '[my exe]'

有任何想法我可以启用LARGEADDRESSAWARE功能而不破坏强名称验证吗?

强名称考虑了强命名文件的哈希值;通过使用editbin.exe LARGEADDRESSAWARE更改文件,您正在更改文件,从而更改文件的哈希值,从而使强名称无效。

您需要更改生成步骤,并在运行强名称步骤之前确保程序集与您所希望的完全一致。根据您的构建管道,这可能意味着不要在Visual Studio中对其进行强命名,而是使用命令行来命名。

最新更新