Как Вы совместно используете код между проектами/решениями в Visual Studio?

Радио Общественности Хакера является превосходным источником подкастов на широком диапазоне технических тем.

219
задан Winner Crespo 2 December 2013 в 04:52
поделиться

9 ответов

На проект может ссылаться несколько решений.

Поместите вашу библиотеку или базовый код в один проект, а затем укажите этот проект в обоих решениях.

69
ответ дан 23 November 2019 в 04:10
поделиться

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

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

18
ответ дан 23 November 2019 в 04:10
поделиться

Вы можете включить проект в несколько решений. Я не думаю, что у проекта есть концепция того, частью какого решения он является. Однако другой альтернативой является создание первой сборки решения в каком-то хорошо известном месте и ссылка на скомпилированные двоичные файлы. Это имеет тот недостаток, что вам нужно будет немного поработать, если вы хотите ссылаться на разные версии в зависимости от того, собираетесь ли вы в конфигурации выпуска или отладки.

Я не верю, что вы можете сделать одно решение действительно зависимым на другом, но вы можете выполнять свои автоматизированные сборки в соответствующем порядке с помощью пользовательских сценариев. В основном относитесь к общей библиотеке так, как если бы это была другая сторонняя зависимость, например NUnit и т. Д.

24
ответ дан 23 November 2019 в 04:10
поделиться

Хорошая идея - создать библиотеку классов dll, содержащую все общие функции. Каждое решение может ссылаться на эту dll независимо от других решений.

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

Между прочим, Решение не может явно зависеть по другому решению.

5
ответ дан 23 November 2019 в 04:10
поделиться

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

32
ответ дан 23 November 2019 в 04:10
поделиться

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

8
ответ дан 23 November 2019 в 04:10
поделиться

Вы можете включить один и тот же проект в несколько решений, но в будущем вы гарантированно столкнетесь с проблемами (относительные пути могут стать недействительными, например, при перемещении каталогов)

После многих лет борьбы с я наконец нашел работоспособное решение, но оно требует, чтобы вы использовали Subversion для управления версиями (что неплохо)

На уровне каталогов вашего решения добавьте svn: externals , указывающее на проекты, которые вы хотите включить в свое решение. Subversion извлечет проект из репозитория и сохранит его в подпапке вашего файла решения. Ваш файл решения может просто использовать относительные пути для ссылки на ваш проект.

Если у меня будет еще время, я объясню это подробно.

7
ответ дан 23 November 2019 в 04:10
поделиться

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

4
ответ дан 23 November 2019 в 04:10
поделиться

Вы можете "связать" файл кода между двумя проектами. Щелкните правой кнопкой мыши свой проект, выберите Add -> Existing item, а затем нажмите стрелку вниз рядом с кнопкой Add:

Screengrab

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

242
ответ дан 23 November 2019 в 04:10
поделиться