2017-02-20 35 views
-1

У меня есть полностью работающее приложение, которое имеет основное приложение и отдельные модули/программные функции, хранящиеся в DLL-файлах. Формы, хранящиеся в файлах dll, загружаются в FlowLayoutPanel dinamicaly. Мне было бы интересно, есть ли недостатки, используя эту технику? Поскольку сначала у меня возникли проблемы с настройкой проекта, и еще одно решение получило бы основное приложение, но модули также были .exe-приложением, которое запускало собственное окно.Сплит-приложение C# в части модуля

+1

Концепция использования DLLS является довольно установлено – MickyD

ответ

1

Предполагая, что вы используете Reflection для загрузки DLL и что все они слабо связаны (правильное использование интерфейсов). Вы должны иметь все проекты модулей, настроенные для вывода в виде библиотек классов (это приведет к созданию DLL-файла, но без .exe для каждого модуля). Файлы Dll для каждого модуля могут быть автоматически скопированы в целевое местоположение, используя настройку события post-build в visual studio (для каждого проекта модуля). Это доказало свою эффективность для меня.

example of post-build copy event

+0

Спасибо, я ценю ваш комментарий. Я использую эти строки для загрузки пользовательской dll http://pastebin.com/MqAEsq9z. Я довольно новичок в C#, я программировал в Delphi около 2+ лет, поэтому C# показалось мне легче освоить. Я определенно буду искать отражение для загрузки DLL, спасибо ссылку, которую я добавил в закладки. –

+0

Глядя на ваш код, я могу подтвердить, что вы уже используете отражение. –

+0

@ ZsoltOroszlány - Один из недостатков метода, который вы используете, заключается в том, что сборки загружаются в текущий AppDomain, что означает, что вы не можете их выгружать без выгрузки AppDomain (то есть выключения программы). Хотя это не требуется, вы можете изучить, как загрузить ваши модули в отдельный AppDomain. Таким образом, вы можете разгрузить их, не останавливая приложение. Одной из причин этого было бы обновление модулей. Просто мысль. –