我可以在DLL中嵌入其他文件吗?

时间:2009-12-11 20:29:38

标签: c# .net winforms dll embedding

我正在通过API为另一个应用程序编写插件。插件分发了一个DLL。是否可以在DLL文件中嵌入其他文件,如pdf,图像,chm帮助文件等...我希望能够提供插件的文档,但我仍然希望保留分发插件的能力-in作为单个文件,用户只需拖放到要安装的应用程序上即可。

4 个答案:

答案 0 :(得分:9)

当然,您可以在DLL中嵌入资源。然后在运行时你只需:

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("com.stackoverflow.plugin.example.Foo.pdf");

这将为您提供嵌入DLL中的Foo.pdf文件的流。请注意资源名称必须由您调用该方法的类型的命名空间确定范围。

答案 1 :(得分:6)

当然,只需在VS.NET中将它们作为“嵌入式资源”(假设您正在使用它)。然后,您可以通过资源API或仅使用Assembly.GetManifestResourceStream()来阅读它们。

答案 2 :(得分:1)

是的,你可以这样做。

将资源文件添加到项目中。在Visual Studio中打开资源文件,然后单击“插入资源”。您可以选择不同类型的资源,包括外部文件。

Visual Studio将为您生成代码,以便您可以在运行时通过Resources标识符将文件作为字节数组检索。

答案 3 :(得分:0)

作为替代选项,如果您需要在用户计算机上解压缩并保存文件(例如您希望在应用程序外部访问的chm文件),您也可以对zip文件执行相同操作。

您说您希望将文件“拖动”到您的应用上。只需检查你的DDE事件,看看文件是否是zip(甚至可能使用带有元数据的jar),并解压缩必要的文件,包括实际的插件。

这与openxml docs的想法相同,它们实际上只是伪装的拉链。