Ссылка на DLL не копируется в мусорный ящик проекта
Проект < Проект < > , а Проект B ссылается на внешний DDL (восстанавливается с помощью NuGet). DLL следует скопировать в папку bin Project A (вместе с DLL проекта B):
![DLL References Copied To Bin]()
В моем случае при запуске Project A я получаю следующее исключение:
Не удалось загрузить файл или сборку 'PostSharp, Version = 3.2.18.0, Культура = нейтральная, PublicKeyToken = b13fd38b8f9c99d7 'или одна из ее зависимостей. Система не может найти указанный файл.
DLL не копируется в контейнер Project A. Все остальные внешние ссылки из Project B копируются с помощью всего лишь штрафа, что меня пугает.
Copy Local
установлено значение true для всех задействованных ссылок. Пример:
![Copy Local Reference]()
Как мне это сделать?
Примечание. Использование Visual Studio 2013.
Ответы
Ответ 1
Параметры, которые я нашел, были следующими:
- Добавить ссылку на PostSharp в Project A.
- Добавить фиктивный код в Project B, чтобы компилятор обнаружил, что ссылка используется.
- Добавить событие сборки, чтобы скопировать DLL.
Мне не нравится какое-либо из вышеперечисленных решений. На мой взгляд, это хаки, и в конечном итоге они будут делать только более неподходящее решение.
Я исправил проблему, используя общий выходной каталог. Это кажется рекомендуемым решением многих. Я также испытал гораздо более быстрое время сборки. См. fooobar.com/questions/42549/....
Ответ 2
Когда я столкнулся с этой проблемой, это произошло потому, что я изменил имя проекта, но не изменил имя сборки - он был идентичен имени сборки другого проекта в решении.
Ответ 3
Я добавил некоторый фиктивный (неиспользуемый) код в Project B, ссылаясь на необходимую DLL.
Таким образом, компилятор будет догадываться, что он должен скопировать DLL в вывод проекта A.