我正在使用 CodeDom 编译 C# 代码。即使没有指定资源,它仍然会编译一个名为“VERSIONINFO”的 Win32Resource。我知道我可以在编译后使用 BeginUpdateResource 将其删除,但这会在文件中留下“PADDINGXXPADDINGXX”,这是我不想要的。有没有办法在没有任何资源的情况下将 C# 代码编译为 .exe?
问问题
375 次
1 回答
1
为这个烦恼实际上是相当麻烦的。EXE 不仅包含 VERSIONINFO 资源,它还有一个清单。查看它的最佳方法是在 Visual Studio 中使用 File + Open + File 打开 EXE。清单位于 RT_MANIFEST 节点下。
这很重要,因为它声明您的程序与 UAC 兼容。没有它,Windows 会将其视为旧版 Windows 应用程序。其中一些非常不可预测的行为,重新映射文件和注册表访问隔离存储。
你可以得到你想要的。在记事本(不是 Visual Studio)中创建一个空的 .rc 文本文件,并使用 rc.exe 将其编译为 .res 文件。在 CompilerOptions 中使用 /win32manifest 以强制编译器使用它,以便它忽略自动生成的本机资源。
于 2012-02-09T14:37:13.253 回答