Есть ли причина для создания .net DLL, а не EXE, если файл используется в качестве ссылочной сборки? - PullRequest
9 голосов
/ 24 августа 2011

Я заметил, что могу добавить ссылку не только на DLL, но и на EXE в Visual Studio и получить доступ ко всем классам в EXE, как если бы это была DLL.

Есть ли причина для созданияDLL или могу ли я так же ссылаться на EXE?

Я спрашиваю, потому что я часто пишу .net программы, которые я запускаю как под Windows, так и под Mac OS, и мое обычное решение - создать DLL с функциональностьюа затем два графических интерфейса пользователя, по одному для каждой цели.

Однако теперь мне кажется, что я могу просто написать версию своего приложения для Windows и затем добавить эту версию Windows (файл EXE) в свой проект Macи ссылаться на Windows EXE, а не DLL.Это также имеет дополнительное преимущество, заключающееся в том, что я могу запускать версию Windows из папки Mac, не добавляя другой файл.

Есть ли веская причина не делать это таким образом?

Ответы [ 3 ]

2 голосов
/ 24 августа 2011

Это зависит от того, сколько времени вы будете выполнять с приложениями. Мне нравится чистота исходной модели, где пользовательский интерфейс разделен на основе платформы, а библиотеки DLL содержат классы, которые являются общими. Я бы посчитал это менее запутанным для обслуживания / рефакторинга.

1 голос
/ 26 августа 2011

Если вы хотите, вы можете собрать все свои сборки как исполняемые файлы (.exe) и ссылаться на них. Для .NET нет различий, если сборка скомпилирована как исполняемый файл (.exe) или библиотека классов (.dll).

Единственное отличие состоит в том, что исполняемый файл имеет дополнительный формат Portable Executable (PE) и заголовок, чтобы их можно было выполнять в системах Windows. В первую очередь этот заголовок используется для запуска среды CLR.

Примечание : сборки .dll также можно создавать как переносимые библиотеки классов

0 голосов
/ 26 августа 2011

Я вижу, по крайней мере, две причины, по которым все равно следует разделить /

  • Версионирование - хорошо иметь независимые номера версий для dll и exse - особенно хорошо менять номер версии, когдаизменяется интерфейс
  • Одиночная ответственность и тестирование
...