2012-08-14 103 views
1

所以我尝试使用TFS建立生成我的3个环境(ST,UAT,PROD)部署包网站部署包的web.config改造。 这就是我为了在本地成功生成软件包而遵循的。 http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/74bb16ab-5fe6-4c00-951b-666afd639864/TFS构建工作不

因此,我的本地机器将生成acyive配置的包,一切都很好。以下是我的构建定义: /p:DeployOnBuild = true; DeployTarget =包 我在Projects To Build中运行解决方案文件和Web部署项目。

它创建与ST,UAT和PROD各自的文件夹。在每个这些都有一个_PublishedWebsites文件夹。该文件夹有2个文件夹。

1)MydeploymentProject - 它包含转换的web.config 2)MyDeploymentProject_Package - 包含Package文件夹内容以及zip文件和setparameters文件。这里的一切都没有改变。但是,如果我检查TFS服务器上的TempBuildDir,它确实包含转换的配置。

相比日志本地和服务器上,我发现,在我的本地转化后的文件被更新,并创建包而在TFS的AfterBuild目标被称为转型完成,它仅止于此。

这是我的本地日志 目标“WPPCopyWebApplicaitonPipelineCircularDependencyError”由于假条件而被跳过; ($(WPPCopyWebApplicaitonPipelineCircularDependencyError))被评估为(False)。 目标 “ProcessItemToExcludeFromDeployment” 文件 “C:\ Program Files文件\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\ Microsoft.Web.Publishing.targets” 从项目的“C:\ TAX-IT \ MAIN \来源\ TDDB \ TDDB_deploy2 \ TDDB_deploy2.wdproj”(目标 “PipelineCollectFilesPhase” 依赖于它): 完成建设目标 “” 项目 “TDDB_deploy2.wdproj” ProcessItemToExcludeFromDeployment。 从项目“C:\ TAX-IT \ Main \ Source \ TDDB \”中的目标“GetProjectWebProperties”中的文件“C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets” TDDB_deploy2 \ TDDB_deploy2.wdproj “(目标 ”PipelineCollectFilesPhase“ 依赖于它): 使用 ”GetProjectProperties C“ 从装配任务”:\ Program Files文件\的MSBuild \微软\ WebDeployment \ V10.0 \ .... \ VisualStudio的\ V10。 0 \网络\ Microsoft.Web.Publishing.Tasks.dll”。 任务“GetProjectProperties”

我不知道什么是错的。 另外我在我的Build服务器上安装了VS2010,web部署2.0和3.0以及web部署工具。

任何人都遇到过这个问题并解决。 请帮忙。

感谢

回答

2

MadCoder,

从我从你的描述云集,你拥有了一切设置正确。看起来你只是缺少“配置”参数。当你运行构建定义时,它使用在“构建配置”参数中指定的配置。如果你想建立多个配置(就像你建议的那样),你需要定义多个配置。我遇到的一个问题是:当您查看TFS构建过程的日志时,是否看到多个配置构建,或者您只看到一个?如果你只看到一个,那么你没有定义所有的配置来转换配置文件。根据你的描述,你需要看到这样的事情在构建定义配置:

enter image description here

如果你不想部署到Web服务器,你可以停止阅读这里,和唐”不得不继续。


如果您选择使用TFS生成定义部署到Web服务器,你需要有一个目标Web服务器的某个地方,你需要安装和配置V2/V3上的Web部署该服务器也是如此。

当您使用TFS构建定义进行部署时,转换将在部署时发生,而不是在打包期间(部署前)发生。它可能在某处封装了一个转换后的配置,但它实际上并不会转换与网站捆绑在一起的配置。我已经能够让部署实际使用转换后的配置的唯一方法是在MSBUILD参数中指定了一个网站。这里是我的MSBuild形式参数的例子:

/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个临时环境等),并仍然使用该类的相应转换的环境。

+1

谢谢jarrettcoggin。我已经指定了3种配置。因此,它使用drop文件夹(其中整个网站)存在的转换web.configs和包含具有开发配置设置的setParamters.xml的包文件夹以及包含未转换的web.config的zip文件创建适当的文件夹(ST,UAT,PROD)。当我在本地执行“构建部署包”时,包中的setParameters.xml具有各自的环境连接字符串设置。我检查了我机器上的所有安装以访问文件夹的权限。它只是没有工作 – MadCoder 2012-08-16 13:12:33