启用 LARGEADDRESSAWARE 后强名称验证失败

Strong Name validation fails after enabling LARGEADDRESSAWARE

我正在构建 n 个 C# 可执行文件,它必须构建为 32 位应用程序(由于其他环境限制)。作为 post 构建步骤,我使用 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].

检查 headers 来验证它是否可以使用超过 2GB

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

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

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

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

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