【发布时间】:2015-05-23 15:52:10
【问题描述】:
解释这个相当长的问题:
当与服务配置结合使用时,为什么您的项目需要 2 个以上的构建配置?
我有一个包含多个网站的云服务,这些网站需要部署到多个不同的 Azure 平台上,一个用于测试,一个用于 UAT,一个用于 Live。
每个环境都需要为其部署的网站定义不同的主机标头,例如test.myportal.com、test.myservice.com、uat.myportal.com、uat.myservice.com、live.myportal.com 和 live.myservice.com。
这意味着我需要为每个环境定义一个 ServiceDefinition,到目前为止还不错。
在我之前看到的相关问题中(Azure: Is there any way to deploy different instance sizes for test/production、Azure connection string best practices(第 4 步,并在 .ccproj 文件中使用$(Configuration) 而不是$(TargetProfile)),人们提到您将需要 X 配置(意思是构建配置)。这对我来说没有意义,因为我只需要两个构建配置(调试和发布)用于代码的构建方式,而不是服务的方式已配置。相反,我需要的是三个服务配置。
我的问题是,我是否认为构建配置应该只用于代码的构建方式,而为服务配置创建多个不同构建配置的人是错误的? (我承认这不是最好的词)
为了进一步解释我是如何围绕这个问题实施解决方案的,我将在下面继续:
我正在为 MSBuild 配置我的 CI 构建服务器以采用附加参数 TargetProfile 以及 Configuration。
我的环境的 MSBuild 命令如下所示:
测试:
msbuild mySolution.sln /p:TargetProfile=Test /p:Configuration=Debug
对于 UAT
msbuild mySolution.sln /p:TargetProfile=UAT /p:Configuration=Debug
直播
msbuild mySolution.sln /p:TargetProfile=Live /p:Configuration=Release
对于我的云服务,我使用三个 ServiceDefinition.csdef 文件,每个环境一个:ServiceDefinition.Test.csdefServiceDefinition.UAT.csdefServiceDefinition.Live.csdef。它们保存在“/config/”文件夹中。
在我的云服务器 ccproj 文件中,我只有两个配置,调试和发布,在 BeforeBuild 中有一个任务:
<Target Name="BeforeBuild">
<Copy SourceFiles="configs\ServiceDefinition.$(TargetProfile).csdef" DestinationFolder="$(OutputPath)" />
<Move SourceFiles="$(OutputPath)ServiceDefinition.$(TargetProfile).csdef" DestinationFiles="$(OutputPath)ServiceDefinition.csdef" />
</Target>
这样可以确保我只需要两个构建配置,但可以拥有任意数量的服务配置,只需更改我传递给 MSBuild 的 TargetProfile 参数即可。
重复我的问题:
我是否认为构建配置应该只用于代码的构建方式,而为服务配置创建多个不同构建配置的人是错误的?
【问题讨论】:
标签: asp.net-mvc azure configuration msbuild environment