C # Статические библиотеки - PullRequest
       40

C # Статические библиотеки

3 голосов
/ 23 августа 2011

Когда я использую для программирования на c, разница между динамической библиотекой и статической была в том, как вы компилировали программу в make-файле.Dlls, как мы знаем, не жестко запрограммированы в приложении, а находятся в отдельных файлах.Что делает их идеальными для обновления и добавления функциональности в программу.Статические библиотеки во время компиляции жестко запрограммированы в приложении.Что идеально подходит для поведения, которое не нужно будет менять в будущем: например, безопасность или базовое общение.

Я знаю, как создавать и вызывать файлы .dll в c #, но мне нужно создавать и использовать статические библиотеки.Есть ли способ сделать это без копирования / вставки библиотеки классов в каждый проект?У меня есть много проектов, которые используют эти статические библиотеки, и я хочу избежать необходимости изменять все библиотеки классов, когда я вносю изменение.

Я гуглил это, но не нашел решения.

Большое спасибо ...

Ответы [ 3 ]

5 голосов
/ 23 августа 2011

Самое близкое, что вы можете прийти - ILMerge - но вам это действительно нужно? Если у вас нет приложения, которое вы можете развернуть как один исполняемый файл, не имеет значения, используете ли вы одну DLL или десять. Я бы предложил, чтобы в большинстве случаев вы просто хранили их как обычные библиотеки классов.

Обратите внимание, что ILMerge - это не то же самое, что "статическая компоновка" - он по-прежнему выполняет работу по объединению всего кода в один файл, но процесс компоновки в .NET принципиально несколько отличается от процесса для нативного кода. .

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

Да, вы можете использовать инструмент, такой как ILMerge , который объединит код IL из нескольких сборок в одну сборку.Интерфейс GUI, такой как NuGenUnify , делает использование ILMerge намного более надежным.

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

В зависимости от ваших требований и приложений от ILMerge вы также можете использовать «.NET Модули». Этот блог предоставляет некоторую информацию о разнице между сетевыми модулями и сборками .

Обратите внимание, что сетевые модули не поддерживаются Visual Studio напрямую. В основном вам нужно вручную использовать опцию /target:module компилятора C # (и, возможно, компоновщик сборки al.exe), чтобы использовать их.

AFAIK, кстати, они являются единственной возможностью создавать сборки, в которых разные исходные файлы происходят из разных языков .NET (VB, C # и т. Д.).

...