Скомпилируйте упомянутую dll - PullRequest
3 голосов
/ 27 августа 2008

Использование VS2005 и VB.NET.

У меня есть проект, который представляет собой API для хранилища данных, которое я создал. При компиляции создает api.dll.

У меня есть второй проект в том же решении, в котором есть ссылка на проект API, который при компиляции создаст wrapper.dll. Это в основном оболочка для API, специфичного для приложения. Когда я использую wrapper.dll в этом другом приложении, я должен скопировать wrapper.dll и api.dll в мое новое приложение. Как я могу заставить проект-оболочку скомпилировать api.dll в себя, чтобы у меня был только один dll, чтобы перемещаться?

Ответы [ 4 ]

1 голос
/ 28 августа 2008

@ Jas, это особая функция в Visual Studio. Процедура описана в этой записи блога, которая называется «Совместное использование файла ключа строгого имени в проектах» . Пример для совместного использования файлов ключей строгого имени, но будет работать для любого типа файла.

Вкратце, вы щелкаете правой кнопкой мыши по своему проекту и выбираете «Добавить существующий элемент». Перейдите к каталогу файлов, которые вы хотите связать, и выделите файл или файлы. Вместо того, чтобы нажимать «Добавить» или «Открыть» (в зависимости от вашей версии Visual Studio), нажмите маленькую стрелку вниз с правой стороны этой кнопки. Вы увидите параметры «Открыть» или «Файл ссылки», если вы используете Visual Studio 2003, или «Добавить» или «Добавить как ссылку» с 2005 (я не уверен насчет 2008). В любом случае выберите тот, который включает слово «Ссылка». Тогда ваш проект по существу будет ссылаться на файл - он будет доступен как из исходного проекта, в котором он находился, так и из проекта, с которым вы «связали» его.

Это удобный способ создать сборку, которая содержит все функциональные возможности wrapper.dll и api.dll, но вы должны будете повторять эту процедуру каждый раз, когда добавляете новый файл в api.dll (но not wrapper.dll).

1 голос
/ 27 августа 2008

Есть более простой способ. Просто создайте ярлыки (называемые связанными файлами в Visual Studio-ese) в вашем проекте wrapper.dll, которые указывают на исходные файлы в api.dll. Это скомпилирует ваш исходный код прямо в wrapper.dll.

1 голос
/ 27 августа 2008

Для объединения двух сборок вам, вероятно, понадобится инструмент, такой как ILMerge .

0 голосов
/ 27 августа 2008

Я думаю, вы можете скомпилировать api.dll в качестве ресурса в wrapper.dll. Затем вручную получите доступ к этому ресурсу из api.dll и загрузите его вручную. Я вручную загрузил сборки с диска, поэтому загрузка одной из потоков не должна отличаться.

Я бы попытался включить dll в ваш проект в виде файла, аналогично включению текстового или xml-файла (в дополнение к справочнику проекта для компиляции). Затем я бы установил действие сборки на «Встроенный ресурс». Внутри wrapper.dll я бы использовал объект Assembly для доступа к api.dll, как и любой другой встроенный ресурс. Затем вы также захотите загрузить сборку, используя Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...