【发布时间】:2016-10-26 20:09:33
【问题描述】:
我构建了一个使用一些外部库的应用程序,例如 Tag-lib、Naudio 和 Windows Media Player。
所以他们将我添加到我的解决方案中(与我的 EXE 文件在同一个文件夹中),一些 DLL。
我想将这些 DLL 嵌入到我的 EXE 文件中,所以我查看了互联网并找到了一些选项。
我找到的最佳答案是:
Embedding DLLs in a compiled executable
它确实有效,但不适用于所有 DLL。
它成功嵌入了 Naudio 和 Tag-Lib,但无法嵌入 Windows Media Player 的 DLL。
谁能帮我将 Windows Media Player 的 DLL 嵌入到我的应用程序的 EXE 中?
更新:
经过一些帮助(感谢 Mathieu Wybrecht),它成功了。 我做了他说的一切,但仍然没有很好的工作。 EXE 文件完美运行,我可以移动他,它会工作。 但是当我在项目的解决方案中时,它错误地告诉我丢失的 Dll(Costura.Fody 刚刚嵌入的 WMP 的 Dll...),然后我再次将 Dll 复制到文件夹中并且错误消失了。它继续构建解决方案,重新构建解决方案或启动程序,DLL 再次消失(嵌入到 EXE)并且错误再次出现......
【问题讨论】:
-
WMP 包含在操作系统中。您不能也不能嵌入它使用的 DLL。它是一个 COM 组件,需要一个互操作库才能在 .NET 程序中使用。 .NET 4 和 VS2010+ 具有“嵌入互操作类型”功能,不再依赖互操作库。
-
我不理解“嵌入互操作类型”选项。你能给我解释一下吗?
-
选择 WMP 引用,在“属性”窗口中查找该选项。需要 VS2010 或更高版本。
-
我的意思是,你能解释一下它在做什么吗?
标签: c# dll axwindowsmediaplayer