Я хочу настроить вывод из моей конфигурации сборки TeamCity моей библиотеки классов, чтобы полученные файлы DLL имели следующий номер версии: 3.5.0.x, где x - это номер версии подрывной версии, который TeamCity взял.
Я обнаружил, что могу использовать переменную среды BUILD_NUMBER
для получения x, но, к сожалению, я не понимаю, что мне еще нужно делать.
"Учебники" Я нахожу, что все говорят: "Просто добавьте это в script", но они не говорят, что script, а "this" обычно ссылается на задачу AssemblyInfo из расширений сообщества MSBuild.
Нужно ли мне каким-то образом создать пользовательский MSBuild script? Является ли "script" таким же, как файл решения или файл проекта С#?
Я вообще ничего не знаю о процессе MSBuild, за исключением того, что я могу передать файл решения непосредственно в MSBuild, но то, что мне нужно добавить в "script", это XML, и файл решения решительно делает не похожи на XML.
Итак, может ли кто-нибудь указать мне на пошаговое руководство о том, как сделать эту работу?
Вот что я закончил:
- Установите Задачи сообщества MSBuild
-
Отредактируйте файл .csproj моей основной библиотеки классов и измените нижнюю часть так, чтобы она читала:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> <Target Name="BeforeBuild"> <AssemblyInfo Condition=" '$(BUILD_NUMBER)' != '' " CodeLanguage="CS" OutputFile="$(MSBuildProjectDirectory)\..\GlobalInfo.cs" AssemblyVersion="3.5.0.0" AssemblyFileVersion="$(BUILD_NUMBER)" /> </Target> <Target Name="AfterBuild">
-
Измените все мои файлы AssemblyInfo.cs, чтобы они не указывали либо AssemblyVersion, либо AssemblyFileVersion (в ретроспективе я рассмотрю вопрос о возврате AssemblyVersion)
- Добавлена ссылка на глобальный глобальный GlobalInfo.cs, который находится за пределами всего проекта
- Убедитесь, что этот файл создан один раз, так что у меня есть файл по умолчанию в исходном элементе управления
Теперь он будет обновлять GlobalInfo.cs только в том случае, если установлена переменная окружения BUILD_NUMBER, которая возникает, когда я создаю TeamCity.
Я решил сохранить константу AssemblyVersion, так что ссылки все еще работают и только обновляют AssemblyFileVersion, поэтому я могу видеть, из какой сборки dll есть.