Подтвердить что ты не робот

Как связать несколько визуальных студийных решений вместе?

У меня есть 3 решения, а для решения A требуются встроенные версии dll из решений B и C. невозможно объединить его с одним решением...

До сих пор кажется, что Visual Studio не поддерживает ссылки на решения, а msbuild достаточно умен, чтобы знать, что вы строите одно решение из другого и т.д., если я так пробую. Общая цель состоит в том, чтобы попытаться сделать несколько решений почти такими, как есть только одно - просто решение А.

Я считаю, что это распространенная проблема, но как вы ее хорошо связываете?

4b9b3361

Ответ 1

Этот вопрос появился в разных, но связанные, формы. На самом деле существует страница

Ответ 2

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

Итак, просто "Добавить существующий проект" во все решения, требующие проекта. Я использую TFS на моем текущем сайте, и, похоже, нет проблем с эфирным источником управления.

Ответ 3

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

В Msbuild, если у вас есть группа свойств

<PropertyGroup>

<SolutionsToBuild>SolutionB</SolutionsToBuild>
<SolutionsToBuild>SolutionC</SolutionsToBuild>
<SolutionsToBuild>SolutionA</SolutionsToBuild>
</PropertyGroup>

Затем выполните задачу MSBuild

<MSBuild Projects="@(SolutionsToBuild)"/>

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

Ответ 4

Вы можете попытаться автоматизировать процесс слияния, чтобы сэкономить время: http://code.google.com/p/merge-solutions/

Хотя у нас была немного другая проблема: около 15 решений (всего около 150 проектов), которые использовали одну общую библиотеку. Проблема заключалась в том, что если мы попытались объединить их все в один, чтобы рефакторировать/уничтожить избыточный код из общей библиотеки. 1. Слияние 15 решений включает в себя много щелчков и ожидания в VS 2. приведенное решение никогда не обновлялось - никто не беспокоился об обновлении его из-за его размера

Ответ 5

Вы можете попытаться добавить команды построения командной строки для dll (в решениях B и C), на которые вы зависите в событиях предварительной сборки ваших проектов (в решении A)

Ответ 6

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

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

Не идеальное решение, но с ним довольно легко работать.

Ответ 7

Вы можете добавить проект Makefile в решение A, которое построит ваши решения B и C (например, с помощью msbuild) и сделает все проекты в зависимыми от этого проекта Makefile. Таким образом, вы не сможете добавлять ссылки на проекты в проектах B и C, но вы можете использовать ссылки dll, и они всегда будут построены из последних источников.

Ответ 8

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

Это очень удобно использовать, потому что процесс сборки выводит последовательность построения (аналогично окну вывода в Visual Studio) для команды promotion для каждой сборки.

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

  • построить решение B
  • построить решение C
  • построить решение A (которое внутренне использует построенные файлы "решение B" и "решение C" )

Я быстро написал script, чтобы уточнить порядок сборки, упомянутый выше, и поддерживать большинство современных версий Visual Studio.

С уважением.