使用CodeDom编译,但不包括“VERSIONINFO”Win32资源

时间:2012-02-09 12:58:30

标签: c# resources codedom versioninfo

我正在使用CodeDom编译C#代码。即使没有指定资源,它仍然编译一个名为“VERSIONINFO”的Win32Resource。我知道我可以在编译后用BeginUpdateResource删除它,但这会在文件中留下“PADDINGXXPADDINGXX”,这是我不想要的。有没有办法在没有任何资源的情况下将C#代码编译为.exe?

1 个答案:

答案 0 :(得分:1)

对此的烦恼实际上相当麻烦。 EXE不仅包含VERSIONINFO资源,还包含清单。最好的方法是在Visual Studio中使用File + Open + File打开EXE。清单位于RT_MANIFEST节点下。

这很重要,因为它声明您的程序与UAC兼容。没有它,Windows将其视为传统的Windows应用程序。其中一些非常不可预测的行为,重新映射文​​件和注册表访问隔离存储。

你可以得到你想要的东西。在记事本(而不是Visual Studio)中创建一个空的.rc文本文件,并使用rc.exe将其编译为.res文件。在CompilerOptions中使用/ win32manifest强制编译器使用它,以便省略自动生成的本机资源。