Зависимости ссылок, не скопированных в выходной каталог - PullRequest
18 голосов
/ 17 декабря 2008

У меня есть библиотека CommonUtils, которую я встроил в dll, в которую я отправляю ссылку из нескольких моих проектов. CommonUtils зависит от log4net.dll, который был задан в качестве ссылки на файл, и copy-local = true при создании CommonUtils.dll. log4net.dll и CommonUtils.dll отсутствуют в GAC.

Все отлично работает в MyWorkingProject, где у меня есть только ссылка на файл CommonUtils.dll - log4net.dll отображается в выходном каталоге (так как это зависимость CommonUtils.dll, но не указанная в MyWorkingProject). Однако, если я создаю новый проект для добавления нескольких юнит-тестов: MyWorkingProjectTest и ссылка на проект MyWorkingProject, а затем снова ссылка на файл CommonUtils.dll (я хочу использовать некоторые из CommonUtils), то при создании log4net.dll, которая является зависимостью в обоих проектах ссылка и ссылка на файл также не копируются в выходной каталог.

Кто-нибудь может прояснить, что здесь происходит? Компилятор не знает, какие из файлов log4net.dll он должен захватить? Здесь я что-то не так делаю? Должен ли я сделать это каким-то другим образом для явного копирования log4net.dll? Имеет ли какой-то смысл, что я должен явно ссылаться на log4net?

Ответы [ 3 ]

2 голосов
/ 18 декабря 2008

Это по замыслу. Вам нужно подумать о последствиях, которые может вызвать автоматическое наследование ссылок. Хотя вы можете логически видеть, какими должны быть ссылки, такого компилятора нет. Теоретически вы могли бы в конечном итоге воспроизвести Framework и значительную часть вашей ОС, если бы она проходила по всему дереву зависимостей.

Это определенно боль, и я согласен и понимаю ваше разочарование, но я предполагаю, что Microsoft не смогла найти логичный способ сделать это иначе.

1 голос
/ 17 декабря 2008

Я считаю, что если вы не добавите log4net в качестве ссылки в свой проект, он не будет скопирован.

0 голосов
/ 18 декабря 2008

Когда в прошлом у меня была похожая ситуация, я получал предупреждение компилятора в Visual Studio, сообщающее, что мне нужно добавить ссылку на зависимую библиотеку.

Получаете ли вы такое предупреждение при компиляции? Если это так, следуйте советам, которые он дает, и вы должны найти Log4net, скопированный в ваш выходной каталог.

...