У меня есть два решения, которые имеют некоторый общий код, поэтому я хотел бы извлечь его и поделиться им между ними. Кроме того, я хотел бы иметь возможность выпускать эту библиотеку независимо, потому что она может быть полезна для других.
- Какой лучший способ сделать это с Visual Studio 2008?
- Присутствует ли проект в более чем одном решении?
- У меня есть отдельное решение для отдельного куска кода?
- Может ли решение зависеть от другого?
.net
visual-studio
code-sharing
pupeno
источник
источник
Ответы:
На проект могут ссылаться несколько решений.
Поместите вашу библиотеку или основной код в один проект, а затем сделайте ссылку на этот проект в обоих решениях.
источник
Вы можете «связать» файл кода между двумя проектами. Щелкните правой кнопкой мыши свой проект, выберите
Add
->Existing item
, а затем нажмите стрелку вниз рядом сAdd
кнопкой:По моему опыту, связывание проще, чем создание библиотеки. Связанный код приводит к одному исполняемому файлу с одной версией.
источник
File > Add > Existing Project...
позволит вам добавить проекты к вашему текущему решению. Просто добавляю это, так как ни один из вышеупомянутых постов не указывает на это. Это позволяет включать один и тот же проект в несколько решений.источник
Вы можете включить проект в более чем одно решение. Я не думаю, что у проекта есть концепция, частью решения которой он является. Однако другой альтернативой является сборка первого решения в известном месте и ссылка на скомпилированные двоичные файлы. Недостатком этого является то, что вам нужно будет немного поработать, если вы хотите ссылаться на разные версии в зависимости от того, используете ли вы конфигурацию выпуска или отладки.
Я не верю, что вы можете сделать одно решение действительно зависимым от другого, но вы можете выполнять автоматические сборки в соответствующем порядке с помощью пользовательских сценариев. По сути, обращайтесь с вашей общей библиотекой так, как будто это другая сторонняя зависимость, такая как NUnit и т. Д.
источник
Вы можете использовать подстановочные знаки, используя следующую технику (таким образом, решение @ Andomar сохраняется в .csproj)
Путин:
Если вы хотите скрыть файлы и / или запретить расширение подстановочного знака, добавьте или удалите элемент из папки «виртуальный существующий элемент», как
MySisterProject
описано выше.источник
<Import
Помещенные в файлы .csproj, кэшируются до тех пор, пока вы не перезагрузите решения, как вы сказали.Вы просто создадите отдельный проект библиотеки классов, содержащий общий код. Это не должно быть частью любого решения, которое использует это. Ссылка на библиотеку классов из любого проекта, который нуждается в этом.
Единственная хитрость в том, что вам нужно будет использовать ссылку на файл для ссылки на проект, поскольку он не будет частью решений, которые к нему относятся. Это означает, что фактическая выходная сборка должна быть размещена в месте, доступ к которому может получить любой, кто создает проект, ссылающийся на нее. Это можно сделать, например, поместив сборку в общий ресурс.
источник
Вы можете включить один и тот же проект в более чем одно решение, но вы гарантированно столкнетесь с проблемами в будущем (относительные пути могут стать недействительными, например, при перемещении каталогов)
После многих лет борьбы с этим, я наконец-то придумал работоспособное решение, но оно требует от вас использовать Subversion для управления исходным кодом (что неплохо)
На уровне каталога вашего решения добавьте свойство svn: externals, указывающее на проекты, которые вы хотите включить в свое решение. Subversion извлечет проект из хранилища и сохранит его в подпапке файла вашего решения. Ваш файл решения может просто использовать относительные пути для ссылки на ваш проект.
Если я найду больше времени, я объясню это подробно.
источник
svn:externals
жесткие ссылки на репозиторий. Когда вы перемещаете репозиторий, внешние ссылки все еще указывают на старый репозиторий.Извлеките общий код в проект библиотеки классов и добавьте этот проект библиотеки классов в свои решения. Затем вы можете добавить ссылку на общий код из других проектов, добавив ссылку на проект в эту библиотеку классов. Преимущество наличия ссылки на проект по сравнению с ссылкой на двоичный файл / сборку состоит в том, что если вы измените конфигурацию сборки на отладочную, выпускную, пользовательскую и т. Д., Проект библиотеки общих классов также будет построен на основе этой конфигурации.
источник
Хорошая идея - создать библиотеку классов DLL, которая будет содержать все общие функции. Каждое решение может ссылаться на эту DLL независимо от других решений.
Фактически, так устроены наши источники в моей работе (и я верю во многих других местах).
Кстати, Solution не может явно зависеть от другого решения.
источник
Два основных этапа включают
1- Создание DLL C ++
В визуальной студии
Код заголовочного файла
Cpp файл
Проверь это
эта опция должна быть Dynamic Library (.dll) и построить решение / проект сейчас.
Файл first_dll.dll создается в папке Debug
2- Связывание в проекте C #
Открытый проект C #
Добавьте эту строку вверху в проекте C #
Теперь к функции из dll можно получить доступ с помощью оператора ниже в некоторой функции
Я создал dll в проекте c ++ в VS2010 и использовал его в проекте VS2013 C #. Это работает хорошо.
источник
Вы можете разместить внутренний сервер NuGet и совместно использовать общие библиотеки, которые будут совместно использоваться в других проектах внутри и снаружи.
Далее это читайте
источник
Если вы пытаетесь обмениваться кодом между двумя различными типами проектов (например, настольный проект и мобильный проект), вы можете заглянуть в папку общих решений . Я должен сделать это для моего текущего проекта, так как для мобильных и настольных проектов требуются идентичные классы, которые находятся только в одном файле. Если вы пойдете по этому пути, любой из проектов, имеющих связанный файл, может внести в него изменения, и все проекты будут перестроены с учетом этих изменений.
источник
Существует очень хороший случай использования «добавления существующих ссылок на файлы» при повторном использовании кода в проектах, и именно тогда вам нужно ссылаться и поддерживать разные версии зависимых библиотек.
Создание нескольких сборок со ссылками на разные внешние сборки не так просто сделать без дублирования кода или использования трюков с контролем исходного кода.
Я считаю, что проще всего поддерживать один проект для разработки и модульного тестирования, а затем создавать «сборочные» проекты с использованием существующих файловых ссылок, когда вам нужно создать сборки, которые ссылаются на разные версии этих внешних сборок.
источник
Один более простой способ включить файл класса одного проекта в другие проекты - это добавить проект в существующее решение, а затем добавить ссылку на DLL нового проекта в существующий проект. Наконец, вы можете использовать методы добавленного класса, используя декальринг с помощью директивы в верхней части любого класса.
источник
Начиная с VisualStudio 2015, если вы храните весь свой код в одном решении, вы можете поделиться кодом, добавив общий проект . Затем добавьте ссылку на этот общий проект для каждого проекта, в котором вы хотите использовать код, а также соответствующие директивы using.
источник
Теперь вы можете использовать общий проект
для получения дополнительной информации проверьте это
источник