2012-02-17 66 views
3

要将Biztalk 2009项目构建为TFS 2010团队构建的一部分,我正在使用MSBuild可执行任务将VS2008 devenv .exe像这样...使用VS2008在命令行构建Biztalk 2009解决方案时出现的“随机”.NET运行时错误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年)

我最终提供了一个新的虚拟机来运行我的Biztalk 2009版本,这样我就可以完全退出那台旧的物理服务器。不过,对于我的懊恼,我发现在5%的时间里,我在新服务器上遇到了同样的随机CLR错误。

基于此我猜测是这是.NET框架中的某种缺陷,我无法修复。但如果任何人有任何想法,我都耳熟能详。

+0

是否有一个特定的原因,为什么你EXEC devenv.exe建立你的解决方案,而不是使用[MSBuild任务](http://msdn.microsoft.com/en-us/library/z7f65y0d%28v=vs.90 %29.aspx)? – Filburt 2012-02-17 14:57:58

+0

我不是100%确定的,因为这是由以前的Biztalk管理员实施的。不过,我相信要用流水线,编排等构建Biztalk 2009解决方案,您必须使用Visual Studio构建它们。 (就像你必须exec'ing出来的devenv.exe构建Visual Studio安装项目。) – 2012-02-17 15:18:59

+0

我使用的MSBuild任务来构建我的BizTalk项目(不解决方案),它工作正常。从我看到的设置项目可能是一个不同的群体。 – Filburt 2012-02-17 15:29:32

回答

1

如果你想给MSBuild任务一试,这里是您的示例中的翻译任务:

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

因为它不是从你的例子清晰$(BuildFlavor)是否决定了Configuration或者你可能不得不将Architecture财产根据你的需要改变这个。

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

正如Bryan表示可能值得看看BizTalk Deployment Framework,但很明显,扔掉其他正在运行的解决方案并不适合您。

+0

我们已经使用BTDF。此步骤在BTDF执行MSI创建之前执行编译。我非常熟悉使用MSBuild任务来调用构建,但我的印象是我们需要使用visual studio来执行编译。因为这似乎没有(从什么样的人在这里张贴)是这种情况下,我会在本周给它一个镜头,看看是否一个直接的MSBuild任务编译一切正常。 – 2012-02-19 20:07:39

相关问题