2011-01-11 3 views
1

У меня есть несколько решений.Ссылка на проект, добавленная к одному из проектов в том же решении, выглядит сломанной в другом решении

В первом решении у меня много проектов. Один из проектов под названием «A» имеет ссылку на проект другого проекта «B» того же решения.

Во втором решении добавлен проект «A», но не проект «B».

Оба решения успешно строились.

Однако во втором растворе, ссылка на В добавлен в проекте А, появляется сломана.

Почему?

Теперь, в первом решении, вместо добавления проекта ссылки на B в A, я просто добавить «ссылку на файл» из DLL B (который копируется в общий выходной каталог, созданный для всех проектов) в . Теперь ссылка появляется в обоих решениях, и первое решение не успешно выполняется.

Могу ли я узнать, что делать, если у меня есть такой сценарий?

EDIT: Я посмотрел на файл проект проекта А и обнаружил, что путь (<ProjectReference Include = "..\B\B.csproj" /> атрибута) для ведения проекта B, относительный путь. (например, «.. \ B \ B.csproj»). Я полагаю, что это причина, по которой эта ссылка выглядит нарушенной во второй сборке, потому что сборка B не является частью второго решения, и, очевидно, «B.csproj» недоступен при разрешении ссылки с использованием относительного пути.

ответ

1

Там два способа ссылаться на выходе проекта:

  1. REFERENCING скомпилированного собрания (.dll файл)
  2. Реферирования самого проекта, подразумевая, что вам требуется выход из его компиляции.

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

Второй сценарий требует, чтобы проект, на который вы ссылаетесь, присутствовал в решении.

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

+0

Да, то, что вы сказали правильно. Я смешал ссылки. Однако это не единственная проблема. Я все еще изучаю, и кажется, что проблема может быть связана с моими автоматическими действиями сборки, которые создают решения через какой-то скрипт. Спасибо за ваш ответ. – Learner

+0

Проблема решается путем удаления проекта A из второго решения и вместо добавления ссылки на проект в A, я добавил ссылку на свою DLL, хранящуюся в общем местоположении. Кроме того, во всех необходимых проектах мне пришлось написать post build event для копирования DLL-файлов из \ bin \ Debug в общую папку, откуда я добавляю ссылки. – Learner

1

В первом решении вы добавили «B» в качестве «Project Reference» для проекта «A». Теперь, когда вы добавили проект «A» ко второму решению, он искал «проект B» во втором решении (поскольку это «ссылка на проект»), он не смог его найти, очевидно, поэтому он показал предупреждение.

Во время выполнения, однако, проект «A» знает, где найти выход проекта B, поэтому ссылки будут восстановлены, и вы не должны иметь проблемы во время выполнения. (и поэтому оба решения успешно построены)

Для второго сценария (добавив ссылку на DLL B непосредственно), это сработало для меня отлично. Когда вы говорите «добавить ссылку на файл», я предполагаю, что вы имеете в виду добавление ссылки на DLL напрямую (щелкните правой кнопкой мыши ссылку «Ссылки» -> «Добавить ссылку» -> «Ассембли» -> просмотр-> B.dll), или есть другой что я не знаю? : S

Надеется, что это помогло :)

+0

Спасибо за ваш ответ. Я все еще изучаю, так как проблема не связана со ссылками. Проблема может заключаться в автоматическом непрерывном построении решений один за другим ...... – Learner

Смежные вопросы