Внедрение номеров версий сборки во время сборки - PullRequest
6 голосов
/ 16 марта 2011

Я хочу изменить номер версии сборки проекта C # во время сборки, передав его в виде свойства в командной строке MSBuild.

AssemblyInfo Task изменит версию сборки внутриAssemblyInfo.cs перед компиляцией.Это почти то, что я хочу.Проблема в том, что я не хочу, чтобы AssemblyInfo.cs изменялся из-за проблем с контролем версий.Я не хочу, чтобы все эти файлы AssemplyInfo.cs отображались как измененные и нуждающиеся в проверке каждый раз, когда мы выполняем сборку.

То, что я хотел бы, это "вещь", которая изменяет номер версии сборкипосле компиляции - возможно, с использованием ткацкой задачи после сборки.Такая «вещь» уже существует где-либо в виде открытого исходного кода или розничного продукта?Если нет, может кто-нибудь указать мне на документацию для написания ткача пост сборки?

Ответы [ 5 ]

7 голосов
/ 16 марта 2011

Поскольку AssemblyVersion готовится в вашей сборке во время компиляции, файл AssemblyInfo.cs с текущим номером сборки действительно принадлежит управлению исходным кодом.

Если ваша проблема с сохранением этого в системе контроля версий заключается в том, что вам не нужны тонны файлов, которые необходимо обновить, попробуйте это.

Вы можете установить ссылки в своем решении, чтобы все проекты указывали на один файл, например, SharedAssemblyInfo.cs. Вот страница, описывающая этот процесс:

http://blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspx

Вы можете использовать файл SharedAssemblyInfo.cs с помощью задачи AssemblyInfo , о которой вы уже знаете, и это будет единственный файл, который необходимо вернуть обратно в систему контроля версий.

3 голосов
/ 16 марта 2011

Вы можете использовать задачу WriteCodeFragment, чтобы с каждой сборкой генерировать новый исходный файл (возможно, с именем _AssemblyInfo.cs), который не находится в управлении исходным кодом и содержит только атрибут AssemblyVersion. Добавьте файл _AssemblyInfo.cs в проект обычным способом и сгенерируйте его в пользовательской цели, которая выполняется до шага сборки. Это было бы менее навязчиво, чем манипулирование сборкой после ее сборки.

1 голос
/ 16 марта 2011

Попробуйте установить AssemblyVersion в файле AssemblyInfo.cs следующим образом:

[assembly: AssemblyVersion("1.0.*")]

Он должен увеличивать AssemblyVersion при каждой сборке, если что-то изменилось.

0 голосов
/ 16 марта 2011
0 голосов
/ 16 марта 2011

Лучше всего зарегистрировать другой файл и создать файл AssemblyInfo.cs с http://code.mattgriffith.net/UpdateVersion/ или что-то подобное в Subversion http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

...