Возможно ли, чтобы решение в VS зависело (т.е. включало) все другое решение? Я видел кое-что о «папках решений», но это не одно и то же....? Спасибо! (Кстати, я использую VS 2008)
Visual Studio: как сделать так, чтобы одно решение зависело от другого?
Ответы (5)
Этот пост устарел, но в наши дни вы можете легко повторно использовать зависимости в других решениях, создав пакеты nuget для всех из них. VS 2015 имеет встроенную сборку пакетов nuget, но в настоящее время является кандидатом на выпуск. В Visual Studio 2013 вы можете использовать пакет nuget Nuget.Packaging, чтобы разрешить сборку вашего проекта в виде пакета Nuget.
Затем вы можете просто опубликовать новые версии своих пакетов в локальной сетевой папке и настроить ее как репозиторий в Visual Studio.
Тогда проекты вашего другого решения могут зависеть от этого пакета.
Например, предположим, что у вас есть повторно используемая служебная DLL в решении под названием «Core Framework», и вы хотите использовать служебную программу на веб-сайте, который вы создаете в решении под названием «XYZEcosystem».
В решении CoreFramework вы должны создать пакет nuget для служебного проекта, который компилируется в служебную 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, и он подберет новую версию.
Не совсем. Вам нужно будет сделать одно из следующих действий:
- Создайте скрипт сборки, который строит решения в правильном порядке.
- Предварительно создайте решение A и ссылайтесь только на построенные двоичные выходные данные из него в решении B.
- Создайте третье решение, содержащее все проекты из обоих решений.
Наиболее распространены первые два пункта, лично я предпочитаю второй.
Посмотрите здесь: https://docs.microsoft.com/en-us/archive/blogs/habibh/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution
На самом деле описанный метод добавляет все проекты из другого решения в текущее решение, не совсем то, что нам нужно, но, по крайней мере, это экономит время, добавляя все проекты вручную один за другим.
*.sln
не ссылается вышестоящий файл *.sln
. Таким образом, любые изменения, внесенные в добавленный файл *.sln
, не будут отражены в вышестоящем файле *.sln
. Было бы лучше, если бы файлы *.sln
могли поддерживать иерархическую связь.
- person A. David Ing; 28.01.2021
Решение — это набор сборок, которые собираются для создания исполняемого файла или библиотеки DLL. Зависимость одного решения от другого не имеет смысла. Выходная сборка (исполняемая/dll) зависит от сборок, на которые она ссылается. Если ваше решение зависит от других сборок, укажите их. Вы можете добавить проекты в свое решение (Файл > Добавить > Существующий проект), а затем добавить ссылки на эти проекты из выходного проекта.
Ты не можешь сделать это. А зачем тебе это?
Просто добавьте в решение все проекты, от которых вы зависите (проекты в «другом» решении).
Затем используйте ссылки на проекты (не ссылки на файлы) между проектами.