Компилировать с CodeDom, но не включать Win32-ресурс "VERSIONINFO" - PullRequest
0 голосов
/ 09 февраля 2012

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

1 Ответ

1 голос
/ 09 февраля 2012

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

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

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

...