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

时间:2016-09-27 15:55:40

标签: c# .net 32-bit strongname

我正在构建必须构建为32位应用程序的n C#可执行文件(由于其他环境限制)。作为一个后期构建步骤,我使用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]' which just exits without any message. I verify that it's enabled to use more than 2GB by checking the headers via dumpbin / headers [my exe]`。

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

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

如何在不破坏强名称验证的情况下启用LARGEADDRESSAWARE功能的任何想法?

1 个答案:

答案 0 :(得分:0)

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

您需要更改构建步骤,并在运行强名称步骤之前确保程序集完全符合您的要求。根据您的构建管道,这可能意味着在Visual Studio中没有强大的命名,而是使用命令行来代替它。