代码之家  ›  专栏  ›  技术社区  ›  P a u l

如何将清单添加到.NET dll?

  •  10
  • P a u l  · 技术社区  · 16 年前

    我有一个C类库项目,它使用系统上注册的COM DLL。现在,我希望将COM DLL部署为并排程序集,因此不必注册它,也不必干扰可能使用不同版本的DLL的其他应用程序。

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

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

    我正在使用VS2008

    3 回复  |  直到 7 年前
        1
  •  10
  •   LowRider2112    15 年前

    您当然可以在.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
  •  2
  •   Ruben Bartelink    12 年前

    在大多数应用程序中,清单通常应用于exes/主机应用程序,因为这是一个理解所有依赖程序集及其功能如何相互啮合的级别。

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

        3
  •  0
  •   Graham Morris    7 年前

    唯一阻止向NET DLL添加清单的是Visual Studio IDE。通过直接修改.csproj,可以很容易地规避这个问题—将applicationmanifest属性添加到适当的属性组中。将清单添加到exe项目并检查.csproj以获取详细信息。

    比使用mt.exe容易得多,它将替换现有的清单(您通常不希望这样做)。

    推荐文章