Я хочу настроить вывод из моей конфигурации сборки TeamCity моей библиотеки классов, чтобы полученные файлы DLL имели следующий номер версии: 3.5.0.x, где x номер ревизии подвариантности, который TeamCity подобрал.Создание TeamCity встраивает номер сборки Subversion в версию сборки
Я обнаружил, что могу использовать переменную окружения BUILD_NUMBER
, чтобы получить x, но, к сожалению, я не понимаю, что мне еще нужно делать.
В «учебники» Я считаю, все говорят «Вы просто добавьте к этому сценарию», но они не говорят, которые сценарий, и «это», как правило, ссылаясь на задачи AssemblyInfo из MSBuild Community Extensions.
Должен ли я создать собственный скрипт MSBuild, чтобы использовать его? Является ли «скрипт» таким же, как файл решения или файл проекта C#?
Я вообще ничего не знаю о процессе MSBuild, за исключением того, что я могу передать файл решения непосредственно в MSBuild, но то, что мне нужно добавить в «скрипт», - это XML, а файл решения решительно не выглядят как XML.
Итак, может ли кто-нибудь указать мне на пошаговое руководство о том, как сделать эту работу?
Это то, что я закончил с:
- УСТАНАВЛИВАЕТЕ MSBuild Community Tasks
Отредактируйте файл .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.
К сожалению, их патчер не [в данный момент] (http://confluence.jetbrains.net/display/TCD65/AssemblyInfo+Patcher) позволяют задать различные значения '' AssemblyFileVersion' AssemblyVersion' и , – ladenedge
Ваше предложение очень полезно в сценариях, где основной проблемой является отслеживание номера сборки: спасибо! – faester
Man Я собирался сделать много шаблонов шаблонов только для того, чтобы получить это в моем коде. Ты спас мне 2 или 3 дня работы! –