2012-02-09 2 views
0

Я компилирую код C# с помощью CodeDom. Даже когда ресурсов нет, он все еще компилирует Win32Resource под названием «VERSIONINFO». Я знаю, что я могу удалить его с BeginUpdateResource после его компиляции, но это оставит в файле файл «PADDINGXXPADDINGXX», чего я не хочу. Есть ли способ скомпилировать код C# в .exe без любых ресурсов?Скомпилировать с CodeDom, но не включать ресурс Win32 Win32

+2

Почему этот ресурс вас так беспокоит? Почему ты не можешь оставить его там? – svick

ответ

1

Фреттинг об этом на самом деле довольно хлопотно. EXE не просто содержит ресурс VERSIONINFO, но также имеет манифест. Лучший способ увидеть это открыть EXE в Visual Studio с файлом + Open + File. Манифест находится под узлом RT_MANIFEST.

Это важно, потому что оно объявляет вашу программу совместимой с UAC. Без него Windows относится к нему как к устаревшему приложению Windows. Какое довольно непредсказуемое поведение, переназначение доступа к файлам и реестру в изолированное хранилище.

Вы можете получить то, что хотите. Создайте пустой текстовый файл .rc в Notepad (не Visual Studio) и скомпилируйте его с rc.exe в файл .res. Используйте/win32manifest в своих CompilerOptions, чтобы заставить компилятор использовать его, чтобы он опускал автоматически созданные собственные ресурсы.

+0

Спасибо за ваш ответ и объяснение. Я буду проверять поведение исполняемого файла с ресурсами и без них, а затем решить, использую ли я его или нет. – bytecode77

 Смежные вопросы

  • Нет связанных вопросов^_^