Сведения о вопросе

Fedya

16:03, 1st July, 2020

Теги

.net   asp.net   svn   versioning    

Как синхронизировать номер редакции SVN с моим веб-сайтом ASP.NET?

Просмотров: 500   Ответов: 7

Переполнение стека имеет номер версии subversion внизу:

svn пересмотр: 679

Я хочу использовать такое автоматическое управление версиями с моими формами .NET Web Site/Application , Windows, WPD projects/solutions.

Как мне это реализовать?



  Сведения об ответе

DINO

18:03, 1st July, 2020

Похоже, что Джефф использует CruiseControl.NET , основываясь на некоторых листающих расшифровках подкастов. Это, по-видимому, автоматизировало возможности deployment от управления версиями до производства. Может быть, именно здесь происходит вставка?


  Сведения об ответе

park

18:03, 1st July, 2020

Мы делаем это с xUnit.net для наших автоматических сборок. Мы используем CruiseControl.net (и пробуем TeamCity). Задача MSBuild, которую мы запускаем для непрерывной интеграции, автоматически изменяет номер сборки для нас, поэтому результирующий файл build ZIP содержит правильно версионный набор из DLLs и EXEs.

Наш файл MSBuild содержит ссылку на UsingTask для DLL, который выполняет замену регулярных выражений: (вы можете использовать этот DLL, так как он также подпадает под лицензию MS-PL)

  <UsingTask
     AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"
     TaskName="CodePlex.MSBuildTasks.RegexReplace"/>

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

 <!-- Cascading attempts to find a build number -->

 <PropertyGroup Condition="'$(BuildNumber)' == ''">
   <BuildNumber>$(BUILD_NUMBER)</BuildNumber>
 </PropertyGroup>
 <PropertyGroup Condition="'$(BuildNumber)' == ''">
   <BuildNumber>$(ccnetlabel)</BuildNumber>
 </PropertyGroup>
 <PropertyGroup Condition="'$(BuildNumber)' == ''">
   <BuildNumber>0</BuildNumber>
 </PropertyGroup>

(Мы пробуем BUILD_NUMBER, который находится от TeamCity, затем ccnetlabel, который находится от CC.net, и если ни один из них не присутствует, мы по умолчанию устанавливаем 0, так что мы можем проверить сценарий автоматической сборки вручную.)

Далее у нас есть задача, которая устанавливает номер сборки в файл GlobalAssemblyInfo.cs, который мы связываем со всеми нашими проектами:

 <Target Name="SetVersionNumber">
   <RegexReplace
       Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
       Replacement='AssemblyVersion("$1.$(BuildNumber)")'
       Files='GlobalAssemblyInfo.cs'/>
   <Exec Command="attrib -r xunit.installer\App.manifest"/>
 </Target>

Это находит атрибут AssemblyVersion и заменяет номер версии a.b.c.d на a.b.c.BuildNumber. Обычно мы оставляем источник проверенным в дереве с фиксированными первыми тремя частями номера конструктора, а четвертую-на нуле (f.e., сегодня это 1.0.2.0).

В процессе сборки убедитесь, что задача SetVersionNumber предшествует задаче сборки. В конце концов, мы используем нашу задачу Zip для zip результатов сборки, чтобы иметь историю двоичных файлов для каждой автоматизированной сборки.


  Сведения об ответе

crush

18:03, 1st July, 2020

Вы можете сделать это, добавив следующее В любом месте вашего кода

$Id:$

Так, например, поступило @Jeff:

<div id="svnrevision">svn revision: $Id:$</div>

а при регистрации сервер заменил $Id:$ на текущий номер редакции. Я также нашел эту ссылку .

Есть также $Date:$ , $Rev:$, $Revision:$


  Сведения об ответе

COOL

18:03, 1st July, 2020

Если вы используете ASP.Net MVC (как и StackOverflow), я написал простое для выполнения 3-шаговое руководство о том, как автоматически получить и отобразить последнюю версию SVN. Экскурсовод вдохновенно размышлял про себя именно над этим вопросом! :о)


  Сведения об ответе

FAriza

18:03, 1st July, 2020

@Balloon Если вы используете TortoiseSVN, вы можете использовать упакованную программу SubWCRev . Он запрашивает рабочую копию и сообщает вам только самый высокий номер редакции. По общему признанию, это похоже на клиентский подход к проблеме на стороне сервера, но поскольку это хорошая программа командной строки, вы должны быть в состоянии захватить ее выходные данные для использования довольно легко.


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

$rev и другие подобные ему являются редакциями для отдельных файлов, поэтому они не изменятся, если файл не изменится. Номер на веб-странице - это (скорее всего, я предполагаю здесь) номер редакции svn для всего проекта. Это отличается от ревизий файлов, на которые указывали другие.

В этом случае я предполагаю, что CCNET вытягивает номер редакции проекта и переписывает часть веб-страницы с этим номером. Любое решение CI должно быть в состоянии сделать это, настроить это самостоятельно с CCNET и Teamcity (хотя и не веб-страницы, но автоматическое управление версиями deployment/assembly версий).

Чтобы сделать это, используйте решение CI, которое поддерживает его, или используйте процесс сборки (MSbuild/Nant) для хранения этой версии и записи ее в файлы перед "deploying".


  Сведения об ответе

crush

18:03, 1st July, 2020

Чтобы добавить к ответу @BradWilson's: "вы также можете попросить вашего поставщика системы управления версиями предоставить номер редакции исходного кода, если хотите"

Чтобы соединить Subversion и MSBuild: MSBuild Проект Задач Сообщества


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться