Ссылка на проект, добавленная к одному из проектов в одном решении, в другом решении кажется поврежденной - PullRequest
1 голос
/ 11 января 2011

У меня есть пара решений.

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

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

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

Однако во втором решении ссылка на B, добавленная в проект A, выглядит неверной.

Почему?

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

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

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

Ответы [ 2 ]

1 голос
/ 11 января 2011

Существует два способа ссылки на выходные данные проекта:

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

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

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

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

1 голос
/ 11 января 2011

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

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

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

Надеюсь, это помогло:)

...