Как настроить номера сборки в Visual Studio, чтобы включить сравнение DLL - PullRequest
5 голосов
/ 09 марта 2010

Я строю решение C # в Visual Studio 2008, которое имеет несколько проектов и проектных зависимостей.Я ищу способ изменить номера версий DLL ТОЛЬКО при изменении кода, который создает проект.В настоящее время я использую Beyond Compare для сравнения моей локальной версии с производственной файловой системой.Цель состоит в том, чтобы развернуть только обновленные библиотеки.Я использую автоинкрементные номера версий, и каждый раз, когда вы открываете visual studio и выполняете сборку, все номера версий dll увеличиваются.То же самое касается полной перестройки решения и когда другой разработчик делает сборку и пытается развернуть.Есть ли способ, которым я могу настроить Visual Studio ТОЛЬКО увеличивать номер сборки на основе измененного содержимого файла?Есть ли дополнение, которое сделает это?Кажется, что двоичное сравнение этих файлов также не удастся из-за разных номеров версий в библиотеках.Кто-нибудь знает лучший инструмент для сравнения только содержимого DLL?Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 22 апреля 2010

Один из вариантов - перейти к решению для непрерывной интеграции, такому как Круиз-контроль .Net , которое позволяет запускать сборки при регистрации в системе контроля версий.

Что касается управления версиями сборки, то обычно я создаю один SolutionVersion.cs (для замены версии сборки по умолчанию cs), который связан с каждым проектом (используйте элемент добавления существующего, но измените кнопку, чтобы добавить ссылку)

Затем я использую задачу NAnt или MSBuild, чтобы взять номер метки сборки круиз-контроля и переписать номера версий SolutionVersion.cs до того, как решение будет построено

Таким образом, я могу взять сборку и проследить ее обратно к коду через версию сборки CruiseControl (еще лучше, когда я обычно заставляю CC.net пометить источник с тем же номером в управлении исходным кодом)

0 голосов
/ 10 марта 2010

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

0 голосов
/ 12 апреля 2010

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

Я описываю свою собственную систему в Автоматическое встраивание информации о версии Mercurial в проекты Visual Studio c # . Хотя мое решение, вероятно, не подходит для вас, в ответ на мой вопрос были предложены и другие интересные варианты, поэтому некоторые из отвергнутых мной решений могут, тем не менее, быть полезными для вас, даже если вам придется адаптировать их к любой VCS, которую вы использовать.

0 голосов
/ 10 марта 2010

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

Рекомендованным поддерживаемым решением было бы, чтобы ваш проект НЕ автоматически увеличивал номер сборки, используя способ Visual Studio. Затем вам нужно будет вручную или написать сценарий предварительной сборки / MS Build Task, чтобы сделать приращение.

...