2

在我的所有其他 .net 应用程序中,我的构建过程(nant 和自定义任务的混合)在调用 msbuild 之前使用当前构建号自动更新 [AssemblyVersionAttribute] AssemblyInfo.cs,并在版本号中标记构建号。

我现在正在处理我的第一个 BizTalk 项目,我想对 BizTalk 程序集的版本号做同样的事情,但我遇到了麻烦!

首先,aseembly 版本号存储在 btproj 文件中,所以我进行了一些谷歌搜索,发现 www.codeplex.com/biztalk 看起来像是我的问题的答案,但还有一个更深层次的问题!

我有一个用于我的模式的项目和另一个用于我的管道的项目,管道项目引用我的模式项目,因为我有一个平面文件 dis/assemblers。当我更新版本号时出现问题,因为即使从 Visual Studio 中更新它们也不会更新对架构的管道组件引用。

因此,如果我在 VS IDE 中手动将所有版本号从 1.0.0.0 更新到 1.1.0.0,构建将失败,因为管道组件平面文件 dis/assemblers 仍然引用旧的 1.0.0.0 版本的模式!他们不会自动更新!

这真的是在属性页中更新 BizTalk 项目的版本号,然后构建项目并在引用它们的所有管道组件的属性中手动更新对它们的引用的手动过程吗?

这意味着我不能让我的构建过程控制我的版本号的构建号部分!

或者是否有更好的方法来管理 BizTalk 程序集的版本号?

4

5 回答 5

2

很抱歉让你失望了,但我一直在走我不得不放弃的那条路。我想有可能实现它,但它需要对绑定文件和其他 XML 文件进行大量更改(如您所提到的,如果您已经发布了服务等,甚至更多)。

也许可以将所有这些必要的更改包装在构建步骤(MSBuild 步骤或其他构建框架中的类似步骤)中 - 这将很有用!

于 2008-11-06T14:11:11.580 回答
2

开发人员-:)

我们遇到了类似的问题,我们最终开发了一个小实用程序,它可以相应地更改所有项目中的版本号,即 *.csproj (asssemblyinfo.cs)、*.btproj。除此之外,它将使用新版本的模式打开和修改 *.btp 文件。简而言之,您所要做的就是在 VS.net 工具菜单中配置此实用程序并执行它。

我想在任何.net 语言中开发这样的实用程序都不是很困难。

警告:不要忘记在更新后使用与最初相同的编码保存文件。

干杯!

于 2008-11-26T14:07:47.127 回答
0

心灰意冷,觉得可能是这样。在更改版本号时更新引用时,BizTalk 2009 项目可能会更好地发挥作用。

我开始手动完成并自动化它,当我意识到需要做什么时,当我意识到我必须修改多少地方才能让它工作时,我退后了一步。感谢上帝撤消结帐。

我的项目中确实包含一个标准 C# 类库(各种辅助函数),我可以在构建过程中更新它的版本号,所以我基本上使用那个程序集来对整个应用程序进行版本控制。如果有人想知道任何环境中的版本,请查看该程序集的版本号。

不理想,但它正在工作。

于 2008-11-06T15:04:33.453 回答
0

我们已经在我们的项目上成功地做到了这一点——我会看看我是否可以让工具的开发人员发布详细信息......

于 2008-11-26T13:30:58.090 回答
0

当您将依赖组件的最新版本作为文件引用(此处为架构)执行集成构建时,就会出现此问题。

请记住,升级程序集版本必须始终手动执行,这样您始终负责对程序集版本的更改。

解决 buildbreaks 问题的一种可能的解决方案是对依赖组件构建的特定版本而不是最新版本的文件引用,并使用 subst 驱动器和复制脚本来获取最新的组件构建。

例如:

SchemaA,程序集版本 1.0.0.0 PipelineA(以 pipelinecomponent XMLValidator 为例),程序集版本 1.0.0.0

PipelineA 有一个对子驱动器(比如 R 驱动器,映射到工作区 D:\MyComponents)和 SchemaA 版本 1.0.0.0 的文件引用,如下所示:

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。

于 2010-02-24T15:34:18.683 回答