none
Выбор используемого AssemblyInfo.cs RRS feed

  • Вопрос

  • Добрый день!

    Я собираю проект из MSBuild. Мне нужно указать свою версию сборки (Assembly(File)Version). Для этого, если я правильно понимаю, я должен внести изменения в файл AssemblyInfo.cs, исправить "[assembly: AssemblyVersion("1.0.0.0")]". Я бы хотел перед сборкой копировать AssemblyInfo.cs и вносить изменения именно в копию, а не в оригинал. И при сборке использовать именно копию.

    Есть ли способ указать (через параметр в командной строке?) какой AssemblyInfo.cs нужно использовать?

    Спасибо!

    P.S. я искал в Интернете, но так и не нашел, как установить версию сборки через командную строку, без исправления AssemblyInfo.cs. Если у кого-то есть на этот счет идеи, буду очень признателен!

    23 февраля 2012 г. 8:39

Ответы

  • Visual Build Professional должен уметь забирать чистую копию исходников из репозитория (или откатывать сделанные изменения) перед билдом. Значит можно спокойно менять оригинальный AssemblyInfo.

    Есть еще http://msbuildextensionpack.codeplex.com/, он тоже умеет заменять AssemblyInfo. У нас он лежит в сорсконтроле, в папке MSBuild\ExtensionPack относительно proj-файла. Скрипт выглядит примерно так:

        <PropertyGroup>
            <ExtensionTasksPath>..\ExtensionPack\</ExtensionTasksPath>
        </PropertyGroup>
        <Import Project="MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks"/>
    ...
        <Target Name="UpdateAssemblyInfo">
            <ItemGroup>
                <AssemblyInfoFiles Include="..\..\**\AssemblyInfo.cs" Exclude="..\..\External\**\AssemblyInfo.cs" />
            </ItemGroup>
    
            <MSBuild.ExtensionPack.Framework.AssemblyInfo AssemblyVersion="$(AssemblyVersion)" AssemblyFileVersion="$(AssemblyVersion)" AssemblyInfoFiles="@(AssemblyInfoFiles)" />
        </Target>
    


    • Помечено в качестве ответа Abolmasov Dmitry 27 февраля 2012 г. 14:57
    24 февраля 2012 г. 11:47
    Модератор

Все ответы

  • > собираю проект из MSBuild. Мне нужно указать свою версию сборки (Assembly(File)Version). 
     
     
    в MSBuild Community Tasks Project см. тег:

    <AssemblyInfo ... />
    пример здесь
     
      
    • Изменено Malobukv 23 февраля 2012 г. 13:51
    23 февраля 2012 г. 13:50
  • Ну да, я наталкивался на проект "MSBuild Community Tasks Project" во время поисков. Все-таки надеялся, что есть какое-то стандартное средство.
    23 февраля 2012 г. 14:55
  • поищите плагин к своему build server-у (если собираете не совсем из чистой консоли, а для автоматизации билдов - то билдсервер у вас точно будет :)

    Например, в teamcity есть стандартный Build Feature - AssemblyInfo Patcher, которые подставил текущую версию во все файлы AssemblyInfo. И у teamcity есть бесплатная версия.

    23 февраля 2012 г. 18:03
    Модератор
  • У нас используется Visual Build Professional и сборка выполняется не только на сервере, но и на компьютерах разработчиков (чисто для удобства). И проекты собираются не только Net. Еще выполняются другие операции, вроде компиляции инсталляторов или сборки пакетов обновлений.

    Процесс инсталляции всего этого хозяйства на машине должен быть как можно проще и поэтому я стараюсь использовать как можно меньше ПО, которое нужно инсталлировать. Вообще я пока не изучал как там инсталлируется MSBuild Community Tasks Project в системе, но вероятно я мог бы поместить его в репозитарий, выкачивать и использовать при сборке.. Я точно так же поступаю с компилятором инсталляторов NSIS, который вообще не требует инсталляции в системе.


    • Изменено tikskit 24 февраля 2012 г. 8:55
    24 февраля 2012 г. 8:50
  • Visual Build Professional должен уметь забирать чистую копию исходников из репозитория (или откатывать сделанные изменения) перед билдом. Значит можно спокойно менять оригинальный AssemblyInfo.

    Есть еще http://msbuildextensionpack.codeplex.com/, он тоже умеет заменять AssemblyInfo. У нас он лежит в сорсконтроле, в папке MSBuild\ExtensionPack относительно proj-файла. Скрипт выглядит примерно так:

        <PropertyGroup>
            <ExtensionTasksPath>..\ExtensionPack\</ExtensionTasksPath>
        </PropertyGroup>
        <Import Project="MSBuild\ExtensionPack\MSBuild.ExtensionPack.tasks"/>
    ...
        <Target Name="UpdateAssemblyInfo">
            <ItemGroup>
                <AssemblyInfoFiles Include="..\..\**\AssemblyInfo.cs" Exclude="..\..\External\**\AssemblyInfo.cs" />
            </ItemGroup>
    
            <MSBuild.ExtensionPack.Framework.AssemblyInfo AssemblyVersion="$(AssemblyVersion)" AssemblyFileVersion="$(AssemblyVersion)" AssemblyInfoFiles="@(AssemblyInfoFiles)" />
        </Target>
    


    • Помечено в качестве ответа Abolmasov Dmitry 27 февраля 2012 г. 14:57
    24 февраля 2012 г. 11:47
    Модератор
  • > Все-таки надеялся, что есть какое-то стандартное средство.
     
     
    возможно, что оно входит в новый TFS, модуль Build Automation. см. Coming Soon: TFS Express (VS/TFS 11 Beta "go live" выйдет 29 февраля 2012)
      
     
    24 февраля 2012 г. 15:55