团队建设定义约25 targets of its own。当您排队Team Build时,它们会按照@ MSDN列出的预定义顺序自动运行。不要修改这个过程。相反,只需设置一个确定任务如何工作的couple of these properties即可。例如,如果您想要普通获取行为,请将<IncrementalGet
>设置为“true”;如果您想要更接近tf get/force,则将其设置为“false”。
就运行您自己的MSBuild脚本而言,这应该不是必需的。从为您提供的TFSBuild.proj文件开始。它应该只需要最小的修改来完成你描述的任何事情。通过覆盖诸如AfterCompile或AfterTest之类的任务来调用您的混淆&签名代码。将您的自动部署代码放入AfterDropBuild中。等
如果您适当地重构,甚至可能是非常复杂的情况。参见过去的回答#1#2。
就实际编译而言,Team Build对解决方案的操作是正确的。我建议给它它想要的。我会第一个承认* .sln文件很丑陋,很大程度上没有记录,但至少您将工作卸载到经过良好测试的&受支持产品。
如果你真的想要,你可以给它一个空白/哑解决方案,并用你自定义的编译器逻辑覆盖CoreCompile任务。但这真的是在惹麻烦。至少,你会失去Team Build的所有灵活性WRT构建多种平台和风格。更实际的情况是,你必须花费大量的时间去调试设计为“正常工作”的东西 - 而且还没有好的MSBuild调试器(我知道)。不值得,国际海事组织。
顺便说一下,解决方案文件不会影响Get过程。正如您在第一个链接中看到的,Get早在Team Build甚至读取解决方案文件之前就已经完成了。除了诸如<IncrementalGet
>之外的一些选项,这完全不是由MSBuild控制的 - 特别是,要下载的路径由与构建定义关联的工作空间映射决定。即,它们存储在Team Build SQL数据库中,而不是文件系统中,并且使用调用TFS web服务API的工具(如团队资源管理器)进行管理。
我有一个跟进问题 - 你提到我应该在AfterCompile任务中运行混淆/签名。这是推荐的解决方案,还是我可以使用Dotfuscator项目? 另外,Wix项目呢?我怎么能告诉他们从哪里拿走这些文件? – SaguiItay 2009-07-26 15:26:56