2016-09-27 2 views
0

Я строю n исполняемый файл C#, который должен быть построен как 32-разрядное приложение (из-за других ограничений среды). В качестве этапа пост-сборки я использую editbin.exe \LARGEADDRESSAWARE, чтобы позволить 32-разрядному приложению использовать более 2 ГБ памяти; хотя я заметил, что это нарушение проверки сильного имени.Проверка сильного имени завершается после включения LARGEADDRESSAWARE

Перед выполнением команды editbin.exe я бегу sn.exe -vf проверить Strong Имя:

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/заголовки [мой] `исполняемые.

Наконец, я повторно запустить команду sn.exe и получить следующий вывод:

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

Любые идеи о том, как я могу включить функциональность LARGEADDRESSAWARE, не нарушая проверку сильного имени?

ответ

0

Сильное имя учитывает хэш файла, названного сильным; путем изменения файла с помощью editbin.exe \LARGEADDRESSAWARE, вы изменяете файл, поэтому хеш файла и тем самым аннулируете сильное имя.

Вам необходимо изменить свои шаги сборки и убедиться, что сборка находится именно так, как вы хотите. до, выполняющий сильный шаг имени. В зависимости от вашего конвейера сборки это может означать не сильное именование его в Visual Studio, а вместо этого вместо этого использовать командную строку.

+0

Через командную строку с помощью 'sn.exe' Я предполагаю? – Fizz

+0

Да, sn.exe может применять сильные имена, а также проверять их, как вы делаете. –