Укажите номер версии сборки в качестве аргумента командной строки в MSBuild - PullRequest
17 голосов
/ 09 декабря 2011

Я хотел бы иметь возможность указать номер версии для всех сборок, которые будут сгенерированы во время сборки, в качестве аргумента команды MSBuild, например:

MSBuild.exe /p:version=5.4.3.0 

Я просмотрел AssemblyInfoTask, но этоне кажется мне хорошим решением в этом случае.

Ответы [ 2 ]

14 голосов
/ 10 декабря 2011

Я все время использую задачу AssemblyInfo, как вы описываете в своем комментарии.

  <!-- update standard assembly attribute in all projects -->
  <Target Name="BeforeBuild" >
    <Message Text="Updating AssemblyInfo to Version $(VersionNumber)"></Message>
    <Message Text="Writing to AssemblyInfo files in $(SolutionRoot)"></Message>
    <AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)" 
                  AssemblyCopyright="$(AssemblyCopyright)" 
                  AssemblyVersion="$(VersionNumber)"
                  AssemblyFileVersion="$(VersionNumber)"
                  >
    </AssemblyInfo>
  </Target>

Значение VersionNumber передается извне файла проекта MSBuild в точности так, как вы описываете:

  MSBuild <project_file> /p:VersionNumber=<value>;...

Мы используем цель BeforeBuild, чтобы гарантировать, что все файлы AssemblyInfo.cs будут обработаны до начала сборки.Разве это не то, что вы хотите?

13 голосов
/ 15 марта 2017

Я знаю, что это старый вопрос, но Google приводит меня к этому как лучший результат.

Я следовал простому решению в этом . Нет необходимости в пакете расширения.

По сути, вам нужно добавить файлы "BuildCommon.targets" и соответствующим образом изменить файл csproj, чтобы номер версии был указан в msbuild, например:

msbuild.exe abc.sln /p:Configuration=Release;VersionAssembly=1.2.3.4

Надеюсь, это поможет.

...