我在Visual中设置了多个配置,以便可以为多个客户之一构建一个解决方案(包含多个项目)。根据客户的不同定制了少量的web.config设置,并将代码构建到不同的“BuildDir”中,这样我就可以打包并交付它。目前,这一切都来自我的开发机器上的和一些Web部署项目,我发现这是非常脆弱的。
我想实现一个CI服务器(CC.Net或TeamCity),但不确定如何最好地适应这种每客户机配置(或者我是否应该尝试)。我在一个分支中进行开发,并在完成每个功能后与主干重新集成。那么,我是否正确地认为CI服务器应该在主干中集成代码,如果是的话,我如何处理每个客户的调试和发布构建?
我的配置如下:
除了针对每个客户的少量配置设置之外,对于所有客户来说,该产品几乎都是相同的。
我很想让你知道我是怎么安排这件事的,还是我想错了?
谢谢。
发布于 2011-12-07 23:33:33
我使用UppercuT、RoundHousE和CC.Net解决了这个问题,并改变了在SVN中分支和标记各种配置的方式。现在,我有了一条代码‘主线’(主干),它由构建服务器上的CC.Net/UppercuT自动构建,然后可用于使用UppercuT进行打包和部署。如果我需要构建特定客户的源,我可以获得他们的源,进行必要的更改,然后提交回他们的分支。然后,在该分支中运行UppercuT,为该客户生成一个可部署的包。与of 2010的配置管理器相比,UppercuT和NAnt的结合提供了更大的灵活性。
发布于 2011-04-20 18:03:39
我们遵循两步构建程序:第一种解决方案是通过调试/发布配置正常构建。接下来(在构建完成过程之后),将运行用于转换web.configs的任务(如果是针对一个文件,但可以很容易地修复处理这些文件):
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="TransformWebConfig">
<TransformXml Source="$(WebFolderName)Web.config"
Transform="$(WebConfigsFolderName)Web.$(WebConfiguration).config"
Destination="$(WebFolderName)Web.config" />
</Target>这边请
1)解决方案文件中只有两个有意义的配置
2)在构建服务器上,您传递两个属性:配置(例如发布)和WebConfiguration (例如UATCust2)
3)此任务仅在构建服务器上运行,因为它是大型构建脚本的一部分:开发人员总是使用默认的调试/发布配置,目标平台配置可以单独存储,例如存储库中的受保护部分,甚至网络共享。
https://stackoverflow.com/questions/5727979
复制相似问题