Ссылка на внешнюю .NET DLL, предоставленную другим приложением в C # - PullRequest
4 голосов
/ 03 августа 2011

У меня есть проект C #, который ссылается на DLL (назовем ее внешней DLL), которая поставляется с другим приложением. Когда я строю свой проект, из-за ссылки внешняя DLL автоматически добавляется в вывод моего проекта. И когда я запускаю свой проект, он загружает внешнюю DLL из папки моего проекта.

Другое приложение, к которому принадлежит внешняя DLL, разработано другой командой, и DLL регулярно обновляется. Я не хочу упаковывать их DLL с моим проектом. Вместо этого я хотел бы, чтобы мой проект загружал их DLL при выполнении, а не выбирал копию DLL из папки моего проекта.

Теперь я знаю, что это возможно посредством отражения. Я знаю, что могу сделать «Assembly.Load» и выбрать DLL. Но поскольку я использую типы из внешней библиотеки DLL во всем коде, мне бы хотелось, чтобы код подвергался статической проверке типов.

Вот что я хотел бы:

  1. Уметь компилировать мой проект, ссылаясь на внешнюю DLL и, таким образом, получать статическую проверку типов.
  2. Когда проект запущен, внешняя DLL берется из папки другого приложения, а не из копии DLL, которая находится в выходной папке моего проекта.

Есть ли способ решить эту проблему? Есть ли что-то среднее между добавлением ссылки и использованием отражения?

1 Ответ

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

Самое быстрое решение вашей проблемы - изменить свойства ссылки. Есть настройка под названием Copy Local. Установите значение false, и оно прекратит копирование DLL в вывод вашего проекта. Вы можете получить доступ к свойствам ссылки, развернув папку ссылок в своем решении, щелкнув правой кнопкой мыши соответствующую ссылку и щелкнув свойства, чтобы открыть панель свойств.

Тот факт, что Visual Studio копирует DLL в выходную папку вашего проекта во время сборки, на самом деле не имеет значения для .Net Framework во время выполнения. Все, что имеет значение, - это то, что сборки, на которые вы ссылаетесь, доступны платформе либо по путям, которые она ищет, либо в глобальном кэше сборок.

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