Скомпилируйте библиотеку DLL, на которую ссылается ссылка

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Используя VS2005 и VB.NET.

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

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

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

Решение

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

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

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

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

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

Вероятно, вам придется использовать такой инструмент, как Ильмерге, чтобы объединить две сборки.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top