TeamCity在封面下向MSBuild传递了哪些参数?

TeamCity在封面下向MSBuild传递了哪些参数?,msbuild,azure,teamcity,teamcity-7.0,Msbuild,Azure,Teamcity,Teamcity 7.0,我今天刚下载了TeamCity 7,并决定为我的Azure解决方案启动并运行它。我还没有尝试做任何花哨的事情,而是从一个非常基本的命令行构建开始: msbuild /t:Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments 这将成功构建并生成如下*所示的包: 然后,我尝试以相同的方式配置TeamCity: 这将成功构建并生成如下*所示的包: 我不明白

我今天刚下载了TeamCity 7,并决定为我的Azure解决方案启动并运行它。我还没有尝试做任何花哨的事情,而是从一个非常基本的命令行构建开始:

msbuild /t:Publish /p:Configuration=Release;TargetProfile=Production;PublishDir=S:\HoursTracker\Deployments
这将成功构建并生成如下*所示的包:

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

这将成功构建并生成如下*所示的包:

我不明白的是,为什么MVC项目的规模存在如此巨大的差异。直接从VisualStudio发布会产生与我的MSBuild命令完全相同的结果,因此我确信TeamCity是个怪人。既然我假设TeamCity没有被破坏,那么有人能教我如何正确配置它以获得预期的输出吗


*我已将包文件重命名为.zip,以便可以查看此帖子的详细信息。

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


TeamCity启动msbuild时使用了从“属性和环境变量”部分获取的数量为/p:的参数,以及一些众所周知的参数,如配置名称或项目名称。

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

致以最良好的祝愿


徐明。

明的回答帮助我解开了谜团。在检查了zip文件的内容之后,我发现区别在于我的MSBuild包包含bin和obj文件夹,而TeamCity包没有

在进行此发现之后,我意识到可以为MSBuild指定多个目标,并在目标开关前面加上“Clean”,如下所示:

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

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

学习进程监视器,您可以轻松查看传递给MSBuild的参数是什么,@LexLi感谢您的提示,我将尝试一下。我尝试了x64和x86。两者的结果相同。我也没有指定工具版本,因为据我所知,该设置的目的是针对与MSBuild版本不同的.NET版本。无论如何,我也尝试过为该设置指定4.0,但没有任何明显的效果。谢谢,明。我不知道那些也是拉链。我会检查他们,看看发生了什么。如果我发现了什么,我会继续提供更多的信息。