Visual Studio & Source Control: Как получить общий код? - PullRequest
2 голосов
/ 04 ноября 2008

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

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

Visual Studio не поддерживает пути поиска кода.

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

Но другие продукты контроля версий (CVS, Subversion, Microsoft Team Foundation Source Save Server, SVN) не поддерживают общие файлы.

Так как же все остальные избегают доставки DLL со своим исполняемым файлом?


Обновление 1

Это проблема развертывания одного файла. ClickOnce создает 18 файлов в 3 папках (то есть более одного файла)

Ответы [ 4 ]

3 голосов
/ 04 ноября 2008

Я мог бы предложить два решения:

  1. Visual Studio позволяет добавить ссылку на файл. Выберите «Добавить существующий элемент», выберите файл и нажмите стрелку рядом с кнопкой «Добавить». Появится всплывающее окно, и вы должны выбрать «Добавить как ссылку» оттуда. Теперь вы можете хранить свой общий код в одном месте (папке).

enter image description here

  1. Скомпилируйте ваш общий код в многоразовые сборки и используйте их в своих проектах. Используйте ILMerge , чтобы объединить все сборки в одну при развертывании. Я лично предпочитаю этот вариант.
1 голос
/ 04 ноября 2008

На моей работе мы начали решать эту проблему, используя внешние папки Subversion. Вам просто нужно добавить свойство 'external' в корневую папку (или любую другую папку), например:

ExternalLib https://yourrepo/SharedLibs/trunk

Когда вы обновляете проект, папка ExternalLib будет создана и заполнена содержимым репо. Любой коммит будет отражен в соответствующем репо.

Итак, вы можете сделать ваше решение для резервного копирования тоже с SVN =)

0 голосов
/ 04 ноября 2008

возможно, рассмотрите возможность использования общих сборок и используйте инструмент, подобный ILMerge, во время процесса сборки, чтобы объединить их все в одну сборку ошибок.

0 голосов
/ 04 ноября 2008

Мы используем развертывание ClickOnce, которое было очень надежным. С ClickOnce существует концептуально один объект, приложение, хотя многие файлы (включая DLLS) загружаются, хотя и скрыты для пользователя. Общий код затем обрабатывается через общие проекты.

Но если вам физически требуется только один файл, ClickOnce вам не подойдет ...

...