【问题标题】:Embedding a Manifest File in Visual Studio 2012在 Visual Studio 2012 中嵌入清单文件
【发布时间】:2015-04-15 01:00:11
【问题描述】:

我的理解是,您可以右键单击项目并选择New Item,然后选择Application Manifest File,将清单文件嵌入到应用程序中。

我已经这样做了,但是当我转到项目属性并查看应用程序选项卡时,我可以看到清单是灰色的。无论我刚刚创建的清单文件是否在项目中都是这种情况 - 它始终是灰色的。

虽然显示为灰色,但它确实显示使用默认设置嵌入清单。这对我来说是两件事之一 - 1)它是灰色的,因为调试文件夹中没有带有 dll 的清单,所以你必须依赖嵌入的一个或 2)我刚刚创建的那个没有嵌入项目。

如果是 1),并且正在使用嵌入式,那么它在哪里。除了我刚刚创建的那个,我再也找不到了!!

我尝试过重新启动 Visual Studio、重建等。我搜索了互联网,一致认为我所做的应该可以工作。

刚刚发生的另一种可能性是清单文件不适用于 dll 插件:-0

【问题讨论】:

  • 在 DLL 中包含清单是非常不寻常的,尽管并非完全无效。绝大多数有效的清单条目仅在它们进入 EXE 项目时才有效。无论你想完成什么,永远不要保密,可能不应该按照你认为应该的方式完成。
  • @HansPassant,真的很简单。我正在为keepass 编写一个附加组件,它是一个DLL。我想在注册表中存储一些设置但是我无法写入注册表,因为我得到了 UnauthorisedAccessException 所以我正在考虑使用清单文件中设置的提升权限运行。然而,这似乎不可能实现!
  • 没有。写入 HKCU 而不是 HKLM 中的密钥。
  • 试过这个 RegistryKey RK1 = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree);但由于某种原因,我仍然得到 UnauthorisedAccessException。

标签: c#


【解决方案1】:

刚刚发生的另一种可能性是清单文件不适用于 dll 插件:-0

没错。清单仅适用于 Visual Studio 的可执行文件。如果您确实需要在 DLL 中嵌入清单,例如免注册 COM 激活,您将需要通过命令行使用 mt.exe 并将其嵌入您的 DLL,或者调用 csc.exe 并编译您的应用程序通过命令行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2013-03-17
    • 1970-01-01
    • 2012-09-26
    • 2016-11-15
    • 2014-06-27
    • 2013-06-14
    相关资源
    最近更新 更多