Добавление ProjectReference к проекту, который не находится в одном решении

Выполняя некоторые рефакторинг наших проектов и файлов решений, я отделил некоторые .sln файлы, чтобы содержать меньше проектов.

Иногда мне нужно ссылаться на некоторые проекты из-за пределов текущего текущего .sln файла.

Например, моим начальным состоянием было следующее:

РЕШЕНИЕ A

  • PROJ A
  • PROJ B

После рефакторинга это будет выглядеть так:

РЕШЕНИЕ A_NEW

  • PROJ A

РЕШЕНИЕ B_NEW

  • PROJ B

Мой вопрос: возможно ли добавить ProjectReference node в проект, который не определен в одном решении VS? (в моем случае PROJ A имеет ссылку на проект PROJ B).

Также, если это возможно, рекомендуется ли это?

Я знаю, что это невозможно из VS ID, только путем редактирования файла .csproj вручную.

Ответ 1

Вы не можете этого сделать. ссылка на проект включает идентификатор GUID для указанного проекта, который поддерживается в файле решения, чтобы отслеживать варианты сборки решений и зависимости. Если вы попытаетесь ссылаться на проект, который не находится в решении, Visual Studio будет жаловаться.

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

UPDATE: поскольку это было отменено, я уточню свой ответ.

Хотя технически возможно создать файл проекта, который ссылается на другой проект за пределами того же решения, Visual Studio не поможет вам сделать это легко. Одна из очень веских причин, почему это плохая идея сделать это (что я наблюдал) заключается в том, что любая конфигурация решения и платформа, которые вы строите (проект ссылки), будут игнорироваться, если MSBuild решает создать проект, на который ссылается, - по умолчанию и Платформа, указанная в этом файле проекта ссылки, будет использоваться вместо этого. Таким образом, вы можете получить смесь двоичных типов в разных папках.

Ответ 2

Временно добавьте проект в решение, добавьте ссылку на него, выгрузите проект, в который теперь добавлена ​​ссылка, удалите ссылочный проект, перезагрузите проект ссылкой.

Если вы не выгрузите проект, ссылка будет автоматически удалена Visual Studio, когда удаленный проект будет удален.

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

Ответ 3

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

Надеюсь, что это поможет.

Ответ 4

Если я правильно прочитал вопрос, он исправлен в VS2017 с помощью Add reference-> Browse.
(в противном случае опустите меня, и я удалю этот ответ)