【发布时间】:2012-03-08 23:13:22
【问题描述】:
为了构建 Biztalk 2009 项目作为 TFS 2010 团队构建的一部分,我正在使用 MSBuild exec 任务来外壳到 VS2008 devenv.exe,就像这样...
<Exec Command=""$(BuildMachineLoc)devenv.exe" "$(BiztalkSolutionPath)" /Build "$(BuildFlavor)" /out "$(DropLocation)\$(BuildNumber)\CoreBiztalkBuildOutputLog.txt""/>
这在大约 95% 的时间里都能正常工作。但是,随机构建将失败,并在日志中显示以下错误。 (我稍微编辑了这个以省略我正在构建的服务的名称)
Build FAILED.
MSB3073: The command ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" "[path to my solution]" /Build "Release" /out "[path to my drop location]\CoreBiztalkBuildOutputLog.txt"" exited with code -2146233082.
如果您检查 CoreBiztalkBuildOutputLog.txt 文件,则表明一切都已成功构建。如果将失败构建的日志与成功构建的日志进行比较,它们是相同的。
代码 -2146233082 的描述性不是很好......所以我从构建机器上的事件查看器中找到了实际的异常。
Event Type: Error
Event Source: .NET Runtime
Event Category: None
Event ID: 1023
Date: 2/17/2012
Time: 2:58:41 AM
User: N/A
Computer: XXXXXXXX
Description:
.NET Runtime version 2.0.50727.3625 - Fatal Execution Engine Error (7A0BC59E) (80131506)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
在网上随便翻一下就表明这是某种 CLR 错误。建议的解决方案是重新安装\修复 .NET 框架。这似乎是有道理的,因为我之前使用的构建机器是一只 7 岁的恐龙,只要我拥有它,它就会出现各种问题。 (~2 年)
我最终配置了一个新的 VM 来运行我的 Biztalk 2009 版本,这样我就可以完全淘汰那个旧的物理服务器。然而,令我懊恼的是,我发现我在大约 5% 的时间在新服务器上遇到了同样的随机 CLR 错误。
基于此,我猜测这是 .NET 框架中的某种缺陷,我无法修复。但是,如果有人有任何想法,我会全力以赴。
【问题讨论】:
-
执行 devenv.exe 来构建解决方案而不是使用 MSBuild task 是否有特定原因?
-
我不能 100% 确定这一点,因为这是由以前的 Biztalk 管理员实施的。但是,我相信要使用管道、编排等构建 Biztalk 2009 解决方案,您必须使用 Visual Studio 构建它们。 (就像您必须通过执行到 devenv.exe 来构建 Visual Studio 安装项目一样。)
-
我正在使用 MSBuild 任务来构建我的 BizTalk 项目(不是解决方案),它工作正常。从我所看到的设置项目可能会有所不同。
-
如果我在您的位置上使用 MSBuild 任务试一试 - 它不需要太多更改,但您可以将 VS 排除为可能的错误来源。
-
我会研究 BizTalk 部署框架,它将解决您的问题。还可以在这里查找 VS2008 的修补程序 intovsts.net/2009/09/17/…
标签: visual-studio msbuild biztalk tfsbuild biztalk-2009