Team Build 2010和web.config转换的问题

时间:2010-11-25 12:24:26

标签: asp.net web-config tfs2010 team-build

我正在努力让web.config转换与自动构建一起使用。

我们有一个相当大的解决方案,包含一个ASP.NET Web应用程序和八个类库。我们有三个开发人员从事该项目,到目前为止,每个人都已将解决方案“发布”到本地文件夹,然后使用文件副本部署到测试服务器。我正在尝试使用TFS 2010实现自动构建/部署解决方案。

我创建了一个构建定义,并在构建过程模板中添加了对msdeploy.exe的调用,以将应用程序部署到测试服务器。到目前为止,太棒了!

然后我尝试实现web.config转换,但我无法让它们工作。如果我在PC上本地构建和发布,则“publish”文件夹具有正确的转换后的web.config文件。

使用团队构建,转换不会发生,我只有基本的web.config文件。

我尝试在Web应用程序的项目文件中添加一个构建后的步骤,正如其他人所建议的那样,类似于:

<target name="AfterBuild">
<TransformXml Source="Web.generic.config"
             Transform="$(ProjectConfigTransformFileName)"
             Destination="Web.Config" />
</target>

但由于源web.config文件具有“applicationSettings”部分,因此失败。我收到了错误

无法找到元素'applicationSettings'的架构信息。

我见过关于在构建定义中添加MSBuild任务的参数的建议,比如

/t:TransformWebConfig /p:Configuration=Debug

但是,当构建类库项目时,这可能会失败,大概是因为它们没有web.config文件。

有什么想法吗?像其他人一样,我认为这只会“正常工作”,但显然不是。这是我需要工作的最后一部分,这让我很生气。我不是一个msbuild专家,所以简单明了!

提前致谢。

道格

2 个答案:

答案 0 :(得分:3)

我刚刚经历过这个。我们的构建有点复杂,因为我们在一个解决方案中有8个类库和9个Web应用程序。但流程是一样的。

首先摆脱你的后续构建目标。你不需要那个。

您需要使用MSDeployPublish服务。这将要求在目标服务器上正确安装和配置它。有关此部分的信息,请查看以下链接:

请注意,必须使用正确的用户权限正确配置相关服务器。以下网站帮助我正确设置。

http://william.jerla.me/post/2010/03/20/Configuring-MSDeploy-in-IIS-7.aspx
http://vishaljoshi.blogspot.com/2010/11/team-build-web-deployment-web-deploy-vs.html
How can I get TFS2010 to run MSDEPLOY for me through MSBUILD?

下一部分要求您的构建定义具有设置为执行发布的正确MSBuild参数。这些参数在Process&gt;中输入。 3.Advanced&gt;构建定义的MS Build Arguments行。这是一个提示:

(don't change the following for any reason)
/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:SkipExtraFilesOnServer=True
/p:AllowUntrustedCertificate=True 

(These control where it's going)

/p:MSDeployServiceUrl="https://testserver.domain:8172/msdeploy.axd" 
/p:UserName=testserver\buildaccount 
/p:Password=buildacctpassword 
/p:DeployIisAppPath="MyApp - TESTING" 

显然,必须在目标服务器上的IIS中配置用户才能访问该axd(请参阅前面的链接)。 IisAppPath是目标服务器上的网站名称。

您不必为配置转换做任何特殊操作,因为构建本身会为您处理。只需在Process&gt;行中输入正确的设置即可。 1.要求&gt;要构建的项目&gt;要构建的配置。

答案 1 :(得分:1)

我没有尝试通过在构建过程模板中添加任务来进行部署,而是在Vishal Joshi的博客文章here中遵循了建议。

现在整个项目已经构建和部署,web.config转换也可以工作。辉煌!

我现在有另一个问题需要解决! Web应用程序引用Web服务,构建过程会生成XmlSerializers dll。但是,尽管构建正常,但它不会部署到Web主机。我认为这需要一个新帖子!

道格