Автоматическое управление версиями BizTalk в процессе сборки - PullRequest
2 голосов
/ 06 ноября 2008

Во всех других моих приложениях .net мой процесс сборки (смесь nant и пользовательских задач) автоматически обновляет [AssemblyVersionAttribute] AssemblyInfo.cs до текущего номера сборки перед вызовом msbuild, выполняя штамп в номере сборки в номер версии.

Сейчас я работаю над своим первым проектом BizTalk, и я хотел бы сделать то же самое с номерами версий сборок BizTalk, но у меня возникли проблемы!

Прежде всего, номера версий aseembly хранятся в файлах btproj, поэтому я немного погуглил и нашел www.codeplex.com/biztalk, который выглядел как ответ на мою проблему, но есть более глубокая проблема!

У меня есть проект для моих схем, а другой - для моих конвейеров, проект конвейеров ссылается на мой проект схем, так как у меня есть простой файл диз / ассемблеров. Проблема возникает, когда я обновляю номера версий, поскольку их обновление даже изнутри Visual Studio не обновляет ссылки компонентов конвейера на схемы.

Таким образом, если я обновлю все номера версий вручную в IDE VS с 1.0.0.0 до 1.1.0.0, сборка завершится неудачно, так как разборщик файлов плоских компонентов конвейера все еще ссылается на старую версию схем 1.0.0.0! Они не обновляются автоматически!

Действительно ли это ручной процесс обновления номеров версий проектов BizTalk на страницах свойств, а затем построения проектов и обновления вручную ссылок на них в свойствах всех компонентов конвейера, которые на них ссылаются?

Это означает, что мой процесс сборки не может управлять частью номера сборки моих номеров версий!

Или есть лучший способ управления номерами версий сборок BizTalk?

Ответы [ 5 ]

2 голосов
/ 26 ноября 2008

Developer-:)

У нас была похожая проблема, и мы в итоге разработали небольшую утилиту, которая бы изменяла номер версии во всех проектах, т.е. * .csproj (asssemblyinfo.cs), * .btproj соответственно. Помимо этого он будет открывать и изменять файлы * .btp с новой версией схем. В двух словах, все, что вам нужно сделать, это настроить эту утилиту в меню инструментов VS.net и запустить ее.

Я полагаю, что не очень сложно разработать такую ​​утилиту в любом .net языке.

Предупреждение: не забудьте сохранить файлы после обновлений в той же кодировке, в которой они были изначально.

ура!

2 голосов
/ 06 ноября 2008

Извините, что разочаровываю вас, но я прошел тот самый путь, который мне пришлось оставить. Я думаю, что этого можно было бы достичь, но для этого потребовалось бы много изменений как в файлах привязки, так и в других XML-файлах (как вы упоминали, и даже больше, если у вас есть опубликованные службы и т. Д.).

Возможно, можно было бы обернуть все эти необходимые изменения на этапе сборки (шаг MSBuild или аналогичный в других средах сборки) - это было бы полезно!

0 голосов
/ 24 февраля 2010

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

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

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

Например:

SchemaA, сборочная версия 1.0.0.0 PipelineA (например, с компонентом pipeValid XMLValidator), версия сборки 1.0.0.0

В PipelineA имеется ссылка на файл для вспомогательного диска (скажем, диска R, который отображается в рабочую область D: \ MyComponents) и версии 1.0.0.0 SchemaA следующим образом:

R:. \ SchemaA \ 1.0.0.0 \ SchemaA.dll

Сценарий копирования локально копирует выходные данные компоновки SchemaA на ваш диск R.

Когда схема A обновляется до версии 1.1.0.0, у вас не возникает никаких проблем, потому что вы все еще используете версию 1.0.0.0, и ВЫ можете использовать версию своей схемы 1.1.0.0. Если вы хотите выполнить обновление, вы должны изменить свой скрипт копирования и заменить ссылку на файл на R: \ SchemaA \ 1.1.0.0 \ SchemaA.dll.

0 голосов
/ 26 ноября 2008

Мы успешно сделали это в нашем проекте - я посмотрю, смогу ли я заставить разработчика инструмента опубликовать детали ...

0 голосов
/ 06 ноября 2008

Потрошен, думал, что это может быть так. Возможно, проекты BizTalk 2009 будут играть лучше при обновлении ссылок при изменении номеров версий.

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

У меня есть стандартная библиотека классов C #, включенная в мой проект (различные вспомогательные функции), с помощью которой я могу обновлять номер версии в процессе сборки, поэтому я в основном использую эту одну сборку для версии всего приложения. , Если кто-то хочет узнать, какая версия находится в какой-либо среде, проверьте номер версии этой одной сборки.

Не идеально, но работает.

...