【问题标题】:"Random" .NET Runtime error when building Biztalk 2009 solutions at the command line using VS2008 devenv.exe使用 VS2008 devenv.exe 在命令行构建 Biztalk 2009 解决方案时出现“随机”.NET 运行时错误
【发布时间】:2012-03-08 23:13:22
【问题描述】:

为了构建 Biztalk 2009 项目作为 TFS 2010 团队构建的一部分,我正在使用 MSBuild exec 任务来外壳到 VS2008 devenv.exe,就像这样...

<Exec Command="&quot;$(BuildMachineLoc)devenv.exe&quot; &quot;$(BiztalkSolutionPath)&quot; /Build &quot;$(BuildFlavor)&quot; /out &quot;$(DropLocation)\$(BuildNumber)\CoreBiztalkBuildOutputLog.txt&quot;"/>

这在大约 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


【解决方案1】:

如果您想尝试 MSBuild 任务,以下是您示例中的翻译任务:

<MSBuild Projects="$(BiztalkSolutionPath)"
    Targets="Build"
    Properties="Configuration=$(BuildFlavor);" />

由于从您的示例中不清楚是 $(BuildFlavor) 确定 Configuration 还是 Architecture 属性,您可能需要根据需要进行更改。

OutputPath 将在项目级别设置 - 我个人使用 MSBuild 任务输出任务参数来获取构建的程序集。部署到 BizTalk 时(使用 BTSTask),您可以让它将您的 BizTalk 程序集复制到您想要的目录,而不必在构建任务中关心它。

正如 Bryan 建议的那样,看看 BizTalk Deployment Framework 可能是值得的,但很明显,放弃其他正在运行的解决方案对你来说不是一个选择。

【讨论】:

  • 我们已经在使用 BTDF。此步骤在 BTDF 创建 MSI 之前执行编译。我非常熟悉使用 MSBuild 任务来调用构建,但我的印象是我们需要使用 Visual Studio 来执行编译。由于情况似乎并非如此(从 ppl 在此处发布的内容),我将在本周试一试,看看是否可以直接执行 MSBuild 任务来编译所有内容。
猜你喜欢
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多