Скомпилируйте с CodeDom, но не включайте Win32 Resource "VERSIONINFO"
Я компилирую код C# с использованием CodeDom. Даже если ресурсы не указаны, он все равно компилирует Win32Resource с именем "VERSIONINFO". Я знаю, что могу удалить его с помощью BeginUpdateResource после его компиляции, но это оставит "PADDINGXXPADDINGXX" в файле, который мне не нужен. Есть ли способ скомпилировать код C# в.exe без каких-либо ресурсов?
1 ответ
На самом деле беспокоиться об этом довольно неприятно. EXE не только содержит ресурс VERSIONINFO, он также имеет манифест. Лучший способ увидеть это - открыть EXE в Visual Studio с помощью File + Open + File. Манифест находится под узлом RT_MANIFEST.
Это важно, потому что он объявляет вашу программу совместимой с UAC. Без этого Windows воспринимает это как устаревшее приложение Windows. Какое-то довольно непредсказуемое поведение, переназначение файлов и доступ к реестру в изолированное хранилище.
Вы можете получить то, что вы хотите. Создайте пустой текстовый файл.rc в Блокноте (не Visual Studio) и скомпилируйте его с помощью rc.exe в файл.res. Используйте /win32manifest в ваших CompilerOptions, чтобы заставить компилятор использовать его, чтобы он не использовал автоматически сгенерированные собственные ресурсы.