我正在构建必须构建为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功能的任何想法?
答案 0 :(得分:0)
强名称考虑了强名称文件的哈希值;通过使用editbin.exe \LARGEADDRESSAWARE
更改文件,您可以更改文件,从而更改文件的哈希值,从而使强名称无效。
您需要更改构建步骤,并在运行强名称步骤之前确保程序集完全符合您的要求。根据您的构建管道,这可能意味着在Visual Studio中没有强大的命名,而是使用命令行来代替它。