启用 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 中不强命名,而是使用命令行来命名。
我正在构建 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]
.
最后,我重新运行 sn.exe
命令并得到以下输出:
Failed to verify assembly -- Strong name validation failed for assembly '[my exe]'
关于如何在不破坏强名称验证的情况下启用 LARGEADDRESSAWARE 功能的任何想法?
强名称会考虑强名称文件的哈希值;通过使用 editbin.exe \LARGEADDRESSAWARE
更改文件,您将更改文件,从而更改文件的哈希值,从而使强名称无效。
您需要更改构建步骤,并确保程序集完全符合您的要求在 运行 强名称步骤之前。根据您的构建管道,这可能意味着在 Visual Studio 中不强命名,而是使用命令行来命名。