Как может я автоматический инкремент версия блока C# через нашу платформу CI (Гудзон)?

JSP:means HTML+Java Code:

JSP имеет собственный жизненный цикл jsp_init () jsp_service () jsp_destroy

После первого запроса JSP преобразуется в файл .java. Существует три типа тегов, которые мы используем
1.) Без сценариев

<%  %>

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

2. ) Тег выражения

<%=  %>

Здесь разработчик может использовать некоторые данные, связанные с печатью

3.) Объявление

<!% %>

Здесь разработчик может объявить некоторые данные, связанные с методом.

Servlet:

У сервлета свой жизненный цикл.

init()
service()
destroy()

После того, как первый контейнер запроса прочтет данные из файла web.xml, после вывода будет отображена приветственная заливка.
Теперь после выполнения действия он будет искать URL-адрес, а после этого процесса он будет искать конкретный сервлет там, где он сам. Сервисная операция выполнит.

JSF:

У JSF есть собственный пользовательский интерфейс, и его жизненный цикл может выполняться шестью способами,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Для пользовательского интерфейса для таблицы здесь мы используем сетку панели, и для этого есть разные грани, .

Rich Faces
Prime Faces.
110
задан Tim 14 September 2011 в 18:55
поделиться

6 ответов

Простая альтернатива - позволить среде C # увеличивать версию сборки за вас, установив для атрибута версии значение major.minor. * (как описано в шаблоне файла AssemblyInfo .)

Возможно, вы ищете более полное решение.

РЕДАКТИРОВАТЬ (ответ на вопрос в комментарии):

Из AssemblyInfo.cs :

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
62
ответ дан 24 November 2019 в 03:14
поделиться

.NET сделает это за вас. В файле AssemblyInfo.cs установите версию сборки major.minor. * (Например: 1.0. *).

При сборке проекта версия создается автоматически.

Генерируются номера сборки и версии я полагаю, основываясь на дате, используя эпоху unix. Сборка основана на текущем дне, а исправление - на количестве секунд, прошедших с полуночи.

9
ответ дан 24 November 2019 в 03:14
поделиться

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

На странице конфигурации задания в разделе Управление исходным кодом нажмите кнопку Дополнительно . В поле Excluded Regions вы вводите одно или несколько регулярных выражений для соответствия исключениям.

Например, чтобы игнорировать изменения в файле version.properties , вы можете использовать:

/MyProject/trunk/version.properties

This будет работать для языков, отличных от C #, и позволяет хранить информацию о вашей версии в Subversion.

11
ответ дан 24 November 2019 в 03:14
поделиться

Я никогда не видел, чтобы функция 1.0. * Работала в VS2005 или VS2008. Нужно ли что-то сделать, чтобы VS увеличивал значения?

Если AssemblyInfo.cs жестко запрограммирован на 1.0. *, То где хранится реальная сборка / версия?

После помещения 1.0. * В AssemblyInfo , мы не можем использовать следующий оператор, потому что ProductVersion теперь имеет недопустимое значение - используется 1.0. *, а не значение, присвоенное VS:

Version version = new Version(Application.ProductVersion);

Вздох - похоже, это одна из тех вещей, о которых все спрашивают, но почему-то никогда твердого ответа. Несколько лет назад я увидел решения для генерации номера ревизии и сохранения его в AssemblyInfo как часть процесса после сборки. Я надеялся, что такой танец не потребуется для VS2008. Может быть, VS2010?

8
ответ дан 24 November 2019 в 03:14
поделиться

Это элегантное решение, которое требует небольшой предварительной работы при добавлении нового проекта, но очень легко справляется с этим процессом.

Идея состоит в том, что каждый проект связан с файлом решения, который содержит только информацию о версии сборки. Таким образом, ваш процесс сборки должен обновить только один файл, и все версии сборки извлекают из одного файла при компиляции.

Шаги:

  1. Добавьте класс в файл решения * .cs файл, я назвал min SharedAssemblyProperties.cs
  2. Удалите всю информацию cs из этого нового файла.
  3. Вырежьте информацию о сборке из файла AssemblyInfo : [сборка: AssemblyVersion ("1.0.0.0")] [сборка: AssemblyFileVersion ("1.0.0.0")]
  4. Добавьте оператор "using System.Reflection;" в файл, а затем вставьте данные в новый файл cs (например, SharedAssemblyProperties.cs)
  5. Добавьте существующий элемент в свой проект (подождите ... прочтите перед добавлением файла)
  6. Выберите файл и перед тем, как щелкнуть Добавить, щелкните раскрывающийся список рядом с кнопкой добавления и выберите «Добавить как ссылку».
  7. Повторите шаги 5 и 6 для всех существующих и новых проектов в решении

Когда вы добавляете файл в качестве ссылки, он сохраняет данные в файле проекта и после компиляции извлекает информацию о версии сборки из этого единственного файла.

В системе управления версиями вы добавляете файл bat или файл сценария, который просто увеличивает файл SharedAssemblyProperties.cs, и все ваши проекты обновят информацию о своей сборке из этого файла.

42
ответ дан 24 November 2019 в 03:14
поделиться

Вот что я сделал для штамповки атрибута AssemblyFileVersion.

Убран AssemblyFileVersion из AssemblyInfo.cs

Добавьте в проект новый пустой файл с именем AssemblyFileInfo.cs.

Установите набор инструментов MSBuild community tasks на машине сборки Hudson или как зависимость NuGet в вашем проекте.

Отредактируйте файл проекта (csproj), это просто файл msbuild, и добавьте следующее.

Где-то будет с указанием версии. Измените это так, чтобы он читался, например,

 <Major>1</Major>
 <Minor>0</Minor>
 <!--Hudson sets BUILD_NUMBER and SVN_REVISION -->
 <Build>$(BUILD_NUMBER)</Build>
 <Revision>$(SVN_REVISION)</Revision>

Hudson предоставляет те переменные env, которые вы видите там, когда проект построен на Hudson (при условии, что они получены из Subversion).

Добавьте в конец файла проекта

 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')" />
  <Target Name="BeforeBuild" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')">
    <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)" />
    <AssemblyInfo CodeLanguage="CS" OutputFile="AssemblyFileInfo.cs" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyConfiguration="$(Configuration)" Condition="$(Revision) != '' " />
  </Target>

. Это использует MSBuildCommunityTasks для создания AssemblyFileVersion.cs для включения атрибута AssemblyFileVersion перед построением проекта. Вы можете сделать это для любого / всех атрибутов версии, если хотите.

В результате всякий раз, когда вы запускаете сборку Hudson, результирующая сборка получает AssemblyFileVersion со значением 1.0.HUDSON_BUILD_NR.SVN_REVISION, например. 1.0.6.2632, что означает 6-й номер сборки в Hudson, созданный из версии 2632 Subversion.

64
ответ дан 24 November 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: