Могу ли я разделить большую dll на 1 dll для каждого класса?

StackOverflow https://stackoverflow.com/questions/801252

  •  03-07-2019
  •  | 
  •  

Вопрос

От Могу ли я создать две или более библиотеки DLL из проекта C# в Visual Studio 2008?, у меня есть еще идея создать всего 1 большой проект.После этого я разделяю dll проекта (содержащую множество классов) на 1 dll для каждого класса, используя событие после сборки для вызова проекта приложения Win (для отделения большой dll).Как это сделать?

Более того, мне также нужно управлять прикрепленным файлом в большой dll.

ОбновлятьЯ нашел трюк, который мог бы помочь мне решить эту проблему, пользовательская сборка?Более того, я думаю, что могу создать собственный обработчик, который генерирует файл динамической сборки, используя отдельный файл модуля и al.exe.Но эта функция превосходит мои ожидания и не является обязательной (исходный код редко меняется).

Многофайловые сборки:Что и как

Как:Создайте многофайловую сборку

Пользовательская многофайловая сборка POCO и ReSharper

Спасибо,

Это было полезно?

Решение 3

Эта проблема решается специальным скриптом для MSBuild, который описан в другом вопросе.

<ItemGroup> 
  <Compile Include="Class1.cs"> 
    <Plugin>true</Plugin> 
  </Compile> 
  <Compile Include="Class2.cs" /> 
  <Compile Include="Class3.cs"> 
    <Plugin>true</Plugin> 
  </Compile> 
  <Compile Include="Program.cs" /> 
  <Compile Include="Properties\AssemblyInfo.cs" /> 
</ItemGroup> 

Visual Studio: один проект с несколькими DLL на выходе?

Спасибо @franko_camron за предложение.

Другие советы

Только...почему?Наличие большого количества DLL может повлиять на производительность при запуске приложения (из-за «слияния»).Это также будет в значительной степени немедленно страдают от циклических ссылок, что является плохо.

Поскольку код .NET (по умолчанию) подвергается JIT-компиляции при первом использовании, наличие дополнительных классов в dll, которые не используются в этом приложении, не оказывает большого влияния.Они просто сидят там, тихо, никому не мешая.

Чистые затраты на управление наличием библиотеки DLL для каждого класса сделают развертывание и т. д. мучительный.

В общем, я не могу придумать разумной причины для этого...

Ответ, который вы получите здесь, ничем не отличается от ответа в другом вопросе: ставить отдельный проект для каждой отдельной dll.

Я хочу спросить вас, как вы понимаете определение «класса».Один класс на DLL, вероятно, означает, что вы не очень хорошо знакомы с тем, как работают сборки, пространства имен и классы.

Расскажите нам, что вы действительно хотите уметь?Потому что то, что, по вашему мнению, вам следует делать для решения этой проблемы (например, создание одной DLL для каждого класса), непрактично.

Обновлять

Учитывая контекст вашего требования (например, веб-приложение Silverlight), я пришел к выводу, что разделение ваших классов на несколько DLL не приведет к улучшению производительности на веб-странице ASP.NET, потому что:

  • DLL используются только сервером, они нет загружено через HTTP в ваш браузер
  • Как только веб-приложение загружает DLL, оно больше не загружается, независимо от того, сколько пользователей одновременно используют ваш сайт.Один экземпляр DLL на сервер.
  • Когда вы запустите свое веб-приложение, оно загрузится все DLL, от которых зависело компиляция, независимо от того, будете ли вы их использовать.

Поэтому с учетом ваших требований, вероятно, лучше НЕ использовать Silverlight для вашего приложения, учитывая ограничение пропускной способности.Вы можете изучить следующие направления:

  • Изучение методов AJAX, в частности JSON (и, вероятно, не ASP.NET AJAX и его UpdatePanel, которым легко злоупотреблять).
  • Изучение jQuery для поиска элементов управления, которые будут реализовывать в JavaScript то, что вы хотите сделать с помощью Silverlight.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top