所以我尝试使用TFS Build为我的3个环境(ST,UAT,Prod)生成部署包。 这就是我在本地成功生成包的过程。 http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/74bb16ab-5fe6-4c00-951b-666afd639864/
所以我的本地机器将为acyive配置生成包,一切都很好。这是我的构建定义: / P:DeployOnBuild = TRUE; DeployTarget =封装 我在要构建的项目中运行我的解决方案文件和Web部署项目。
它使用ST,UAT和PROD创建相应的文件夹。在每个中都有一个_PublishedWebsites文件夹。此文件夹有2个文件夹。
1)MydeploymentProject - 它包含转换后的web.config 2)MyDeploymentProject_Package - 包含Package文件夹内容以及zip文件和setparameters文件。这里的一切都没有改变。但是,如果我检查TFS服务器上的TempBuildDir,它确实包含转换后的配置。
当比较本地和服务器上的日志时,我发现我的本地After转换文件已更新并创建了包,而在TFS上,AfterBuild目标称为转换完成并在那里结束。
这是我的本地日志 由于错误条件,目标“WPPCopyWebApplicaitonPipelineCircularDependencyError”被跳过; ($(WPPCopyWebApplicaitonPipelineCircularDependencyError))被评估为(False)。 从项目“C:\ TAX-IT \ Main \ Source \ TDDB \ TDDB_deploy2”中的文件“C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets”中定位“ProcessItemToExcludeFromDeployment” \ TDDB_deploy2.wdproj“(目标”PipelineCollectFilesPhase“取决于它): 在项目“TDDB_deploy2.wdproj”中完成构建目标“ProcessItemToExcludeFromDeployment”。 从项目“C:\ TAX-IT \ Main \ Source \ TDDB \ TDDB_deploy2”中的文件“C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets”中定位“GetProjectWebProperties” \ TDDB_deploy2.wdproj“(目标”PipelineCollectFilesPhase“取决于它): 使用程序集“C:\ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ .... \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll”中的“GetProjectProperties”任务。 任务“GetProjectProperties”
我不确定是什么问题。 我还在Build服务器上安装了VS2010,web deploy 2.0和3.0以及Web部署工具。
任何人都面临这个并且已经解决了。 请帮忙。
由于
答案 0 :(得分:2)
MadCoder,
根据我从您的描述中收集到的内容,您可以正确设置所有内容。看起来你只是缺少“配置”参数。运行构建定义时,它使用“Configurations to Build”参数中指定的配置。如果您希望构建多个配置(就像您建议的那样),则需要定义多个配置。我遇到的一个问题是:当您查看TFS构建过程的日志时,您是否看到构建了多个配置,或者您只看到一个?如果您只看到一个,那么您没有定义所有配置以转换配置文件。根据您的描述,您需要在构建定义配置中看到类似的内容:
如果您不想部署到网络服务器,可以在这里停止阅读,而不必继续阅读。
如果您选择使用TFS构建定义部署到Web服务器,则需要在某处安装目标Web服务器,并且您还需要在该服务器上安装和配置Web Deploy v2 / v3
当您使用TFS构建定义进行部署时,转换发生在部署时,而不是在打包期间(部署之前)。它可能会在某处打包转换后的配置,但它实际上不会转换与网站捆绑在一起的配置。我能够让部署实际使用转换配置的唯一方法是在MSBUILD args中指定了一个网站。这是我的MSBUILD args的一个例子:
/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=RemoteAgent /p:MsDeployServiceUrl=MyWebServer/MsDeployAgentService /p:DeployIisAppPath="MyWebsite as named in IIS" /p:UserName=MyDomain\MyWebDeployUser /p:Password=MyWebDeployPassword
如果您不希望MSBUILD执行实际部署(我不愿意,因为那时您的部署过程与TFS绑定),您可以在构建过程之后执行部署并使用the CTT Project, found on codeplex。此工具执行与MSBUILD完全相同的转换,但它还包括参数化设置的功能,以便您可以定义环境类(例如,3个QA环境,2个分段环境等),并仍然使用该类的相应转换环境