Использование CCNetLabel для установки AssemblyVersion и PublishVersion с CruiseControl.NET - PullRequest
1 голос
/ 28 октября 2009

Я пытаюсь развернуть приложение Click Once (создать и опубликовать) с помощью CruiseControl.NET. Я не могу узнать, где я могу использовать CCNetLabel для установки моего AssemblyVersion и / или PublishVersion. Я бы принял другие решения, которые позволили бы использовать уникальный номер версии для развертывания CruiseControl.NET (развертывания Live и Development).

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

Вам нужно установить его перед компиляцией в вашем AssemblyInfo.cs, как указывает другой ответчик. Labeller версии сборки замечательный, но он не работает с SVN. Если вы используете svn, возможно, вы захотите взглянуть на svn revision labeller .

Как только вы получите метку, генерирующуюся должным образом, вы можете использовать ее в своем скрипте CC или Nant при создании / редактировании файла AssemblyInfo.cs. Если вы используете Nant, то задача asminfo будет вам очень полезна. Было бы неплохо выполнить SO-поиск, но вы также можете посмотреть эту статью , что должно быть очень полезно.

1 голос
/ 28 октября 2009

Вам нужно написать скрипт для настройки вашего AssemblyVersion. Я бы порекомендовал использовать NAnt или MSBuild для этой цели, но PowerShell или простой bat-файл тоже подойдут.

В вашей конфигурации CCNET вы используете Метка сборки версии . CCNetLabel доступен затем внутри скрипта через ${CCNetLabel} (NAnt) соответственно. переменная окружения %CCNetLabel% (пакетно - попробуйте разные оболочки, так как я знаю, что у них есть проблема с этим).

Задача сценария - отредактировать файл AssemblyInfo.cs проекта или создать файл CommonAssemblyInfo.cs и ссылаться на него из проекта для сборки.

SO поиск

[cruisecontrol.net] Assemblyinfo

дает более ценный совет.

0 голосов
/ 11 марта 2013

Этого можно добиться с помощью краткого описания Nant C # здесь

Создайте свойство с именем $ {assemblyinfo.file}, которое указывает на файл AssemblyInfo.cs в вашем проекте.

    <!-- Updating assembly version with the CI build http://lazyloading.blogspot.com/2007/05/updating-assembly-version-with-ci.html -->
<target name="update.assembly" description="Replaces the version in the assemblyinfo.cs file">
    <echo message="AssemblyInfo: ${assemblyinfo.file}" />
    <echo message="Version: ${CCNetLabel}" />
    <script language="C#">
        <references>
            <include name="System.dll" />
        </references>
        <imports>
            <import namespace="System.Text.RegularExpressions" />
        </imports>
        <code>
        <![CDATA[
            public static void ScriptMain(Project project)
            {
                string fileContent="";
                using (StreamReader reader = new StreamReader(project.Properties["assemblyinfo.file"]))
                {
                    fileContent = reader.ReadToEnd();
                    reader.Close();
                }
                string newVersion = string.Format("[assembly: AssemblyVersion(\"{0}\")]", project.Properties["CCNetLabel"]);
                string newText = Regex.Replace(fileContent, @"\[assembly: AssemblyVersion\("".*""\)\]", newVersion);
                using (StreamWriter writer = new StreamWriter(project.Properties["assemblyinfo.file"], false))
                {
                    writer.Write(newText);
                    writer.Close();
                }
            }
        ]]>
        </code>
    </script>
</target>

Пример:

[сборка: AssemblyVersion ("1.0. *")]

становится

[сборка: AssemblyVersion ("2013.03.11.001")]

...