2013-11-22 2 views
5

В чем разница между статической и динамической сборкой. Только тот факт, что можно загружать из файла, а другой можно создать во время работы программы?Типы сборки - в чем разница

+2

Хороший вопрос! Просто, но не обрабатывается много! –

ответ

6

Статические сборки могут включать в себя типы .NET Framework (интерфейсы и классы), а также ресурсы для сборки (растровые изображения, файлы JPEG, файлы ресурсов и т. Д.). Статические сборки хранятся на диске в портативных исполняемых файлах (PE). Вы также можете использовать .NET Framework для создания динамических сборок, которые запускаются непосредственно из памяти и не сохраняются на диске перед выполнением. Вы можете сохранить динамические сборки на диск после их выполнения.

Статические сборки - это те сборки, которые хранятся на диске постоянно. Они могут включать классы .NET Framework, интерфейсы, а также файл ресурсов. Эти сборки не загружаются непосредственно из памяти, а непосредственно загружаются с диска, когда CLR (Common Language RunTime) запрашивает их. Эти сборки используются для хранения на диске в виде файла или набора файлов. Всякий раз, когда компилируется код C#, вы получаете сборки STATIC.

Динамические сборки - это те сборки, которые не хранятся на диске перед исполнением, фактически после выполнения они сохраняются на диске. Когда их запускает среда выполнения .NET, они загружаются напрямую из памяти не с диска. Reflection emit предоставляет множество способов создания динамических средств сборки. Они создаются в памяти с использованием пространства имен System.Reflection.emit. В пространстве имен System.Reflection.Emit содержатся классы, которые позволяют компилятору или инструменту генерировать метаданные и промежуточный язык Microsoft (MSIL) и необязательно создать PE-файл на диске. Когда приложение требует типов внутри этих сборок, эти динамические сборки создаются динамически во время выполнения.

Простыми словами: статические сборки, которые обычные соединения, с которыми мы ежедневно взаимодействуем с ним, загружают, разрешают их и т. Д., А динамические сборки, которые вы создают его с отражением и вызовом.

Источники информации: http://www.dotnetheaven.com/article/static-assembly-vs-dynamic-assembly-in-csharp и MSDN

+1

также я просто пытаюсь читать и работать с 'System.Reflection.Emit' - может создать (используя пошаговое руководство) некоторый результат приложения - полученный класс, которым можно управлять 1 из 4 вариантов - в соответствии с' AppDomain.DefineDynamicAssembly () 'и' AssemblyBuilderAccess '- отражение, Run, RunANdSave, Save. Попробуйте использовать save. Теперь я его сохранил - получил lib (файл .dll), но все равно не вижу, когда это может быть полезно. – gbk

Смежные вопросы