Могу ли я вставлять другие файлы в DLL?

Я пишу плагин для другого приложения через API. Плагины распространяются DLL. Возможно ли внедрить другие файлы в DLL-файл, например, PDF-файлы, изображения, файлы справки chm и т. Д. Я хочу, чтобы иметь возможность предоставить документацию с моим подключаемым модулем, но я все равно хотел бы сохранить возможность распространения подключаемого модуля В качестве одного файла пользователь может просто перетащить и установить приложение для установки.

Конечно, вы можете встроить ресурс в свою DLL. Затем во время выполнения вы просто выполните:

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

Это даст вам stream в файл Foo.pdf встроенный в вашу DLL. Обратите внимание на то, что имя ресурса должно быть ограничено пространством имен типа, из которого вы вызываете метод.

Конечно, просто сделайте их «Embedded Resource» в VS.NET (если вы используете его). Затем вы можете прочитать их через API ресурсов или просто с Assembly.GetManifestResourceStream () .

Да, вы можете это сделать.

Добавьте файл ресурса в свой проект. Откройте файл ресурсов в Visual Studio и нажмите «Вставить ресурс». Вы можете выбрать различные типы ресурсов, включая внешние файлы.

Visual Studio будет генерировать код для вас, чтобы вы могли извлекать файлы в виде массивов байтов во время выполнения из их имен через идентификатор Resources .

В качестве альтернативного варианта, если вам нужно распаковать и сохранить файлы на компьютере пользователя (скажем, файл chm, который вы хотите получить вне своего приложения), вы также можете сделать то же самое с zip-файлами.

Вы сказали, что хотите, чтобы файл был «перетащен» в ваше приложение. Просто проверьте свои события DDE, чтобы увидеть, является ли файл zip (возможно, даже с использованием чего-то вроде банки с метаданными) и распаковать необходимые файлы, включая фактический плагин.

Это та же идея, что и openxml docs, они на самом деле просто замаскированы на молнии.