0

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

4

1 回答 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 回答