Похоже, что VS2010 и MSBuild 4.0 VisualStudio и MSBuild могут разрешать и создавать ссылки на проекты, которые не находятся в пределах решения.VS2010/MSBuild 4.0 создание внешних проектов
Приведем пример, чтобы быть более конкретным. Создайте решение под названием Решение1 с проектом C# с именем A и еще один проект под названием B. В проект B, добавить ссылку на проект A. Теперь создайте новое решение под названием Solution2 и нажмите «Добавить существующий проект» и выберите Проект B. Существует предупреждение, которое можно увидеть в обозревателе решений и в списке предупреждений.
Хитрость в том, что даже при наличии «предупреждения как ошибки» мы можем построить Solution2.sln. Фактически, проект A находится и построен Visual Studio или MSBuild. Убедимся в этом, открыв командную строку/VS2012 VS2010 и выполнить следующие команды:
msbuild <dirPathToSolution1> Solution1.sln /t:clean **cleaning up solution1 with project A"
msbuild <dirPathToSolution1> Solution2.sln /t:build
ProjectA эффективно построен и хуже: предупреждение упоминалось выше, даже не поднял там. С предыдущими версиями Visual Studio такая ситуация не может произойти (я протестировал ее с помощью msbuild 3.5 и VS2008).
Однако в нашей ситуации мы хотели бы предотвратить такие вещи. В самом деле, у нас есть большой исходный репозиторий с несколькими решениями и многими коммиттерами. Мы реорганизуем наши зависимости, направленные на окончательное извлечение небольших репозиториев. Между тем, мы не хотим, чтобы разработчики добавляли скрытые зависимости проекта, не видя этого. Мы хотели бы разрешить только ссылки на проекты «внутри» решения, оставив другие зависимости от ссылок на сборку.
Таким образом, возникает вопрос: «Есть ли способ предотвратить такое решение, такое как Solution2 для сборки?». В идеале, он не должен компилироваться как с VS2012, так и с MSBuild. Однако решение, связанное только с командной строкой MSBuild, было бы выполнено благодаря нашей Continuous Integration.
Возможный дубликат [Почему «Указанный компонент« X »не найден». считается предупреждением?] (http://stackoverflow.com/questions/166831/why-is-the-referenced-component-x-could-not-be-found-considered-a-warning) – stijn