2009-12-14 137 views
9

我有一个c#类库项目,它使用在系统上注册的COM DLL。我现在想要将COM DLL部署为并排组合,因此我不必注册它,也不会干扰可能使用不同版本DLL的其他应用程序。如何将清单添加到.NET DLL?

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

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

+1

我看到一个exe项目启用了清单框。类库项目是否永远不会显示清单? – 2009-12-14 09:01:11

回答

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

2

在大多数应用中

,清单通常适用于EXE文件/主机的应用程序 - 因为这是在哪一个了解所有相关组件及其能力如何啮合在一起的水平。

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

+0

是的,我发现了。你知道任何关于操作系统清单缓存吗? – 2009-12-16 16:30:12

+0

对不起,不知道什么关于缓存(OTTOMH猜测:并非所有只是在加载时读出EXE的资源,任何缓存将是透明的 - 我猜你不会问这是否是直截了当!) – 2009-12-16 17:23:24

+2

这是不正确的。 DLL可以包含并激活清单。它只需要使用激活上下文API手动完成。 – 2013-08-01 08:20:15

相关问题