У меня есть полностью работающее приложение, которое имеет основное приложение и отдельные модули/программные функции, хранящиеся в DLL-файлах. Формы, хранящиеся в файлах dll, загружаются в FlowLayoutPanel dinamicaly. Мне было бы интересно, есть ли недостатки, используя эту технику? Поскольку сначала у меня возникли проблемы с настройкой проекта, и еще одно решение получило бы основное приложение, но модули также были .exe-приложением, которое запускало собственное окно.Сплит-приложение C# в части модуля
ответ
Предполагая, что вы используете Reflection для загрузки DLL и что все они слабо связаны (правильное использование интерфейсов). Вы должны иметь все проекты модулей, настроенные для вывода в виде библиотек классов (это приведет к созданию DLL-файла, но без .exe для каждого модуля). Файлы Dll для каждого модуля могут быть автоматически скопированы в целевое местоположение, используя настройку события post-build в visual studio (для каждого проекта модуля). Это доказало свою эффективность для меня.
Спасибо, я ценю ваш комментарий. Я использую эти строки для загрузки пользовательской dll http://pastebin.com/MqAEsq9z. Я довольно новичок в C#, я программировал в Delphi около 2+ лет, поэтому C# показалось мне легче освоить. Я определенно буду искать отражение для загрузки DLL, спасибо ссылку, которую я добавил в закладки. –
Глядя на ваш код, я могу подтвердить, что вы уже используете отражение. –
@ ZsoltOroszlány - Один из недостатков метода, который вы используете, заключается в том, что сборки загружаются в текущий AppDomain, что означает, что вы не можете их выгружать без выгрузки AppDomain (то есть выключения программы). Хотя это не требуется, вы можете изучить, как загрузить ваши модули в отдельный AppDomain. Таким образом, вы можете разгрузить их, не останавливая приложение. Одной из причин этого было бы обновление модулей. Просто мысль. –
Концепция использования DLLS является довольно установлено – MickyD