Visual Studio: как сделать одно решение зависимым от другого? - PullRequest
26 голосов
/ 20 июля 2009

Можно ли сделать решение в VS зависимым (то есть включить) в целом другое решение? Я видел кое-что о «Папках решений», но они, кажется, не одно и то же ....? Спасибо! (Кстати, я использую VS 2008)

Ответы [ 5 ]

19 голосов
/ 20 июля 2009

Не совсем. Вам нужно будет выполнить одно из следующих действий:

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

Первые два пункта являются наиболее распространенными, где я лично предпочитаю второй.

12 голосов
/ 22 мая 2015

Этот пост старый, но в наши дни вы можете легко повторно использовать зависимости в других решениях, создавая пакеты nuget для всех них. VS 2015 имеет встроенный пакет nuget, но в настоящее время является кандидатом на выпуск. В Visual Studio 2013 вы можете использовать пакет nuget Nuget.Packaging, чтобы ваш проект мог быть собран как пакет Nuget.

Затем вы можете просто опубликовать новые версии ваших пакетов на локальном сетевом ресурсе и настроить его в качестве репозитория в Visual Studio.

Тогда проекты вашего другого решения могут зависеть от этого пакета.

Например, допустим, у вас есть утилита DLL многократного использования в решении, называемом «Базовая платформа», и вы хотите использовать утилиту на веб-сайте, который вы создаете, в решении, называемом «XYZEcosystem».

В решении CoreFramework вы создадите пакет nuget для Utility Project, который компилируется в утилиту dll и включает dll и его файл pdb в пакет.

Затем вы публикуете это в сетевой папке.

Допустим, у вашего пакета есть идентификатор типа «XYZ.Core.Utilities» с версией 1.0.0.0.

Теперь в XYZEcosystem вы должны использовать консоль диспетчера пакетов, установить раскрывающийся список хранилища для своего хранилища и ввести «Install-Package XYZ.Core.Utilities», и он установит последнюю версию XYZ.Core.Utilities.

Если вы внесете изменения в XYZ.Core.Utilities, вы можете запустить Update-Package XYZ.Core.Utilities в XYZEcosystem, и он подберет новую версию.

5 голосов
/ 02 февраля 2012

Взгляните сюда: http://blogs.msdn.com/b/habibh/archive/2009/06/24/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution.aspx

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

1 голос
/ 20 июля 2009

Вы не можете этого сделать. И с чего бы ты хотел?

Просто добавьте в решение все проекты, от которых вы зависите (проекты в «другом» решении).

Затем используйте ссылки на проекты (не ссылки на файлы) между проектами.

0 голосов
/ 20 июля 2009

Решение - это набор сборок, которые создаются для создания какого-либо исполняемого файла или библиотеки DLL. Наличие одного решения зависеть от другого не имеет смысла. Выходная сборка (execute / dll) зависит от сборок, на которые она ссылается. Если ваше решение зависит от других сборок, обратитесь к ним. Вы можете добавить проекты в свое решение («Файл»> «Добавить»> «Существующий проект»), а затем можете добавить ссылки на эти проекты из выходного проекта.

...