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

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

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

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

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

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

是的,你可以这样做。

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

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

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

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

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