10

我有 ac# 类库项目,它使用在系统上注册的 COM dll。我现在想将 COM dll 部署为并行程序集,因此我不必注册它,也不必干扰可能使用不同版本 dll 的其他应用程序。

我已经使用添加新项目菜单将 app.manifest 添加到 c# 项目中,但我不确定下一步该做什么。在项目属性/应用程序/图标和清单中,清单下拉菜单被禁用。我不知道如何克服。我添加了一个清单文件,为什么它不在下拉列表中?

我有一个适用于 C++ 应用程序的 COM dll 清单,我想我保持原样。现在我需要知道如何为 c# 项目编辑 app.manifest。我将从添加一个已知良好的依赖元素开始。但是我需要一个关于如何设置它的教程,我看不到它在任何地方都被覆盖。

我正在使用 VS2008

4

3 回答 3

10

您绝对可以在 .net dll 中嵌入清单。应用程序清单的内容并不都适用于程序集,但有些适用。例如,UAC 条目对组件清单没有意义,但 assemblyIdentity 有意义。

使用 MT.EXE 工具,您可以将清单嵌入到 dll 中:

嵌入:

mt.exe -manifest filename.dll.manifest -outputresource:filename.dll;#2

提炼:

mt.exe -inputresource:filename.dll;#2 -out:filename.dll.extracted.manifest

以下是相关信息的更多链接:

另一个 dll 嵌入示例: http: //msdn.microsoft.com/en-us/library/ms235591 (v=VS.100).aspx

SxS 演练:http: //msdn.microsoft.com/en-us/library/ms973915.aspx

于 2011-05-06T22:32:37.680 回答
2

在大多数应用程序中,清单通常应用于 EXE/主机应用程序 - 因为这是了解所有依赖程序集及其功能如何结合在一起的级别。

例如,在通过 trustinfo/security/requestedPrivileges/requestedExecutionLevel 元素设置 UAC 标记的情况下,依赖程序集能够合法地说“我说我们都了解 UAC”的情况是没有意义的。

于 2009-12-16T13:24:36.507 回答
1

唯一阻止您将清单添加到 NET dll 的是 Visual Studio IDE。通过直接修改 .csproj 可以很容易地绕过它 - 在适当的属性组中添加 ApplicationManifest 属性。将清单添加到 exe 项目并检查 .csproj 以了解详细信息。

比使用 MT.exe 容易得多,它将替换现有的清单(您通常不希望发生这种情况)。

于 2018-06-02T11:31:42.437 回答