为什么 Visual Studio 2010 不让我 select 自定义清单?

Why won't Visual Studio 2010 let me select a custom manifest?

我正在用 C# 制作一个 DLL,我希望无需注册即可在 COM 中看到它。按照其他地方的说明,我在项目中生成了一个新的 "app.manifest" 文件并对其进行了编辑以包含我需要的 COM 信息,而不是通用的 UAC 信息。

除了 Visual Studio 不会让我使用它来代替默认清单。当我打开项目的属性时,清单下拉列表被禁用:

我需要做什么才能select嵌入我添加到项目中的自定义清单?

编辑:"app.manifest" 文件位于项目的 Properties 文件夹中。如 here 所述,对于 registration-free COM,我需要将清单从嵌入默认清单更改为在属性中使用清单。除了它不会让我出于某种原因更改该设置。

编辑 2:当我将输出类型更改为控制台应用程序或 Windows 应用程序时,清单下拉列表被启用。当 MSDN 明确声明 registration-free COM 库需要清单时,为什么要为 class 库禁用它?

Class 库不需要使用该下拉列表来嵌入清单。

重要提示: 将清单以这种方式嵌入到 C# 库中的唯一原因几乎是为了通过 registration-free COM 使用它。如果您不这样做,则不需要清单,这些步骤不适合您。走开。

如果您使用添加 -> 新项目 -> 应用程序清单文件向项目添加 app.manifest 文件:

...并且将其保存在项目根目录中在属性或任何其他子文件夹中):

...它会自动嵌入到DLL中。

您可以通过使用“文件”->“打开”->“文件”在构建后打开 DLL 并确认它包含名为 RT_MANIFEST:

的内容来验证它是自动添加的

特别感谢 Hans Passant 提供了所有这些信息,尽管他对不同问题提供了大约六个答案,而不是全部放在一个地方。