Я пишу плагин для другого приложения через 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, они на самом деле просто замаскированы на молнии.