【问题标题】:Compile with CodeDom, but don't include the "VERSIONINFO" Win32 Resource使用 CodeDom 编译,但不包含“VERSIONINFO”Win32 资源
【发布时间】:2012-02-09 12:58:29
【问题描述】:

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

【问题讨论】:

  • 为什么该资源如此困扰您?为什么不能放在那里?

标签: c# resources codedom versioninfo


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答和解释。我将在有资源和没有资源的情况下测试可执行文件的行为,然后决定是否使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多