【问题标题】:Strong Name validation fails after enabling LARGEADDRESSAWARE启用 LARGEADDRESSAWARE 后强名称验证失败
【发布时间】:2017-02-05 08:29:54
【问题描述】:

我正在构建 n 个 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]' which just exits without any message. I verify that it's enabled to use more than 2GB by checking the headers viadumpbin /headers [my exe]`。

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

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

有什么想法可以在不破坏强名称验证的情况下启用 LARGEADDRESSAWARE 功能吗?

【问题讨论】:

    标签: c# .net 32-bit strongname


    【解决方案1】:

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

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

    【讨论】:

    • 是的,sn.exe 可以应用强名称,也可以像您一样验证它们。
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多