1

所以我尝试使用 TFS Build 为我的 3 个环境(ST、UAT、Prod)生成部署包。这就是我在本地成功生成包的方法。 http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/74bb16ab-5fe6-4c00-951b-666afd639864/

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

它使用 ST、UAT 和 PROD 创建相应的文件夹。在其中的每一个中都有一个 _PublishedWebsites 文件夹。此文件夹有 2 个文件夹。

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

当比较本地和服务器上的日志时,我发现在我的本地转换文件更新并创建包之后,而在 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。

我不确定出了什么问题。我还在构建服务器上安装了 VS2010、Web 部署 2.0 和 3.0 以及 Web 部署工具。

任何人都面临过这个问题并解决了。请帮忙。

谢谢

4

1 回答 1

2

疯狂编码器,

根据我从您的描述中收集到的信息,您已正确设置了所有内容。似乎您只是缺少“配置”参数。当您运行构建定义时,它会使用“构建的配置”参数中指定的配置。如果您想构建多个配置(就像您建议的那样),您需要定义多个配置。我的一个问题是:当您查看 TFS 构建过程的日志时,您是否看到构建了多个配置,还是只看到一个?如果您只看到一个,那么您没有定义所有配置来转换配置文件。根据您的描述,您需要在构建定义配置中看到类似的内容:

在此处输入图像描述

如果您不想部署到网络服务器,可以在此处停止阅读,不必继续阅读。


如果您选择使用 TFS 构建定义部署到 Web 服务器,则需要在某处拥有目标 Web 服务器,并且还需要在该服务器上安装和配置 Web Deploy v2/v3。

当您使用 TFS 构建定义进行部署时,转换发生在部署时,而不是在打包期间(部署之前)。它可能会在某处打包转换后的配置,但实际上不会转换与网站捆绑的配置。我能够让部署真正使用转换后的配置的唯一方法是当我在 MSBUILD args 中指定了一个网站时。这是我的 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 相关联),您可以在构建过程之后进行部署并使用codeplex 上的 CTT 项目。此工具执行与 MSBUILD 完全相同的转换,但它还包括参数化设置的功能,因此您可以定义环境类(例如,3 个 QA 环境、2 个暂存环境等)并仍然使用该类的相应转换的环境。

于 2012-08-15T12:32:38.340 回答