Визуальная студия рекурсивная Копия локальная - PullRequest
6 голосов
/ 13 июня 2009

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

В Visual studio 2008 у меня есть следующие проекты:

  • A - ссылки B

  • B - ссылки Lib.dll

Когда B собран, Lib.dll появляется в B / bin / Debug. (это нормально)

Когда A строится, B.dll появляется в A / bin / Debug, но Lib.dll НЕ появляется в A / bin / Debug.

Не будет ли логичным поведение копировать также все зависимости B в выходной путь A, поскольку B понадобятся эти сборки во время выполнения?

Все ссылки имеют copylocal = true.


(Теперь я должен вручную ссылаться на все зависимости B от A, это правильно? Думаю, я мог бы также использовать настраиваемый шаг сборки. В любом случае, имеет ли это поведение какие-либо преимущества / смысл?)

Ответы [ 3 ]

5 голосов
/ 22 декабря 2009

Это работает, только если на сборку действительно ссылается .dll. Т.е. если у вас есть LibInterface.dll и LibImplementation.dll - и ваш код в A ссылается только на классы в LibInterface.dll, то нет способа получить LibImplentation.dll в выходной файл для B (чисто).

Это также относится к любым произвольным файлам, т. Е. Если у вас есть Randon.myFile, связанный с проектом A, это будет желаемая процедура: 1. Добавить в качестве копии локальное или создать событие для проекта A (таким образом, появляется в выходных данных для проекта A) 2. В проекте B установите «copy local» для проекта A ref. 3. Затем вы должны получить все в выходных данных проекта A в проекте B (включая ваш файл) - но вы не получите.

Может быть какой-то другой вариант - «Копировать локально - все» или что-то в этом роде. Это помогло бы VS поддержать методы IOC и очистить абстракции.

0 голосов
/ 13 июня 2009

Если Lib.dll является dll взаимодействия, то его базовая dll не будет скопирована. Кроме этого, я бы сказал, что, возможно, ошибка оператора, потому что вам определенно не нужно вручную ссылаться на зависимые управляемые сборки.

0 голосов
/ 13 июня 2009

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

  1. ссылка B в A
  2. Создать экземпляр объекта из B в A.
  3. Compile.

Если сборка завершается успешно, все ссылается на OK.

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