2012-04-18 112 views
1

我今天刚刚下载了TeamCity 7,并决定启动并运行Azure解决方案。我不想做任何特别的事(还),并开始与一个非常基本的命令行编译:TeamCity将什么参数传递给MSBuild?

msbuild /t:Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments 

这成功地构建并生成一个包,看起来像这样*:

enter image description here

然后我试图以相同的方式配置的TeamCity:

enter image description here

本b uilds成功并产生一个包,看起来像这样*:

enter image description here

我不明白的是为什么没有在MVC项目的规模如此巨大的差异。直接从Visual Studio发布产生与我的MSBuild命令完全相同的结果,所以我确信TeamCity是一个奇怪的人。既然我认为TeamCity没有损坏,有人可以请教我如何正确配置它,以便获得预期的输出?

*我已经用.zip重命名了包文件,以便可以查看这篇文章的详细信息。

+0

学习Process Monitor,你可以很容易地看到传递给MSBuild的参数是什么,http://technet.microsoft.com/en-us/sysinternals/bb896645 – 2012-04-18 08:21:41

+0

@LexLi谢谢你的提示,我会给出一个射击。 – 2012-04-19 03:11:02

回答

1

明的回答帮我解开这个谜。在检查了zip文件的内容之后,我发现不同的是,我的MSBuild包包含bin和obj文件夹,而TeamCity包没有。

enter image description here

使这一发现之后,我意识到,我可以给的MSBuild指定多个目标,并前置“清洁”我的目标切换,如下所示:

msbuild /t:Clean;Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments 

正如预期的那样,这个删除这些文件夹。显然,TeamCity为您隐式指定了“Clean”。谜团已揭开。

0

为什么你为msbuild runner指定了x64?尝试选择工具版本。您尚未指定/ p:平台参数。发布任务是否涉及重建?

的TeamCity开始用的MSBuild/P数:从“属性和环境变量”一节,再加上一些知名的参数,如配置名称或项目名称取参数。

+0

我试过x64和x86。两者都有相同的结果。我也没有指定工具版本,因为我的理解是,该设置的目标是针对与MSBuild版本不同的.NET版本。在任何情况下,我也尝试为该设置指定4.0,并没有任何明显的效果。 – 2012-04-19 03:09:36

1

Windows Azure包可能比我们预期的要大。您可以将cssx文件重命名为zip,然后您会发现包内的内容。除了Web应用程序的常用文件之外,还有一堆Windows Azure文件。例如,如果启用诊断,您将看到一个诊断文件夹,您将在其中找到Windows Azure诊断运行时使用的文件。

最好的问候,

Ming Xu。

+0

谢谢,明。我没有意识到这些也是拉链。我会尽力检查他们,看看发生了什么。我会跟进更多信息,如果我找出一些东西。 – 2012-04-19 03:10:31

+0

感谢您指点我在正确的方向。 +1 – 2012-04-19 03:50:30