Visual Studio и Source Control: как получить общий код?

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

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

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

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

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

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


Обновление 1

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


person Ian Boyd    schedule 04.11.2008    source источник
comment
SVN поддерживает общие файлы через свойства svn: externals   -  person Joel Coehoorn    schedule 04.11.2008
comment
О, нет! Есть меньшие проекты управления версиями ?? : O   -  person CindyH    schedule 04.11.2008


Ответы (4)


Могу предложить два решения:

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

введите описание изображения здесь

  1. Скомпилируйте общий код в повторно используемые сборки и используйте их в своих проектах. Используйте ILMerge для объединения все сборки в одну при развертывании. Я лично предпочитаю этот вариант.
person Atanas Korchev    schedule 04.11.2008
comment
Эй, хороший! Собираюсь попробовать этот ILMerge =) - person Seiti; 04.11.2008
comment
+1 за добавление в качестве ссылки. Мы все время используем это для совместного использования файла CommonAssemblyInfo.cs между проектами в решении. - person tomfanning; 04.06.2009
comment
Как ссылка разрешается, когда она находится на машине другого разработчика (у них не будет такой же компоновки жесткого диска, как у меня). Когда я связываю файл, я вижу, что csproj файл содержит запись <Compile Include="..\..\..\DelphiComponents\Hyperion.NET Library\Hyperion\Toolkit.cs"> Этот путь не будет работать, если другие разработчики получат csproj файл проекта из системы управления версиями. - person Ian Boyd; 01.09.2011

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

ExternalLib https://yourrepo/SharedLibs/trunk

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

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

person Seiti    schedule 04.11.2008

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

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

person Jeff Kotula    schedule 04.11.2008

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

person rhinof    schedule 04.11.2008