从开发过渡到云时从一个连接字符串切换到另一个连接字符串

从开发过渡到云时从一个连接字符串切换到另一个连接字符串

问题描述:

我正在研究云应用程序。当我考出来我想有作为ServiceConfiguration.cscfg如下我的连接字符串设置我的计算机上的应用:从开发过渡到云时从一个连接字符串切换到另一个连接字符串

<Setting name="DataConnectionString" value="UseDevelopmentStorage=true" /> 

当我发布到云中,我需要有它设置如下:

<Setting name="DataConnectionString" value="DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=yyy" /> 

我继续从一个环境到另一个环境,并不断改变DataConnectionString。

有没有一种方法可以自动执行此操作?我环顾四周,看不到任何例子,但我确定有些人和我有同样的问题。

感谢,

南希

虽然Igorek的做法完美的作品,我们更愿意作出这样的转变我们的CI服务器上这也是自动部署的责任。主要原因是限制对敏感数据的访问,因为只有有限数量的受信任开发人员可以访问CI服务器。此外,它有助于保持我们的代码更清洁,因为它不包含冗余配置项目。在我们的例子中,我们使用Hudson-CI(Jenkins-CI)和MSBuild.ExtensionPack.FileSystem.File(替换动作)来转换配置文件。

在此获取连接字符串代码的一部分,你可以使用#if(DEGUG)预处理指令才能使用的东西,或者不考虑如果编译Debug与否,或if(Debugger.IsAttached)MSDN)为了知道调试器已连接。

如果您想使用Visual Studio配置转换,请参阅my answer以解决类似的问题。

可以在Azure的SDK使用CloudConfigurationManager 1.7 http://msdn.microsoft.com/en-us/LIBRARY/microsoft.windowsazure.cloudconfigurationmanager

这将启动通过查看ServiceConfiguration.cscfg例如ServiceConfiguration.Cloud.cscfg进行配置设置。如果它不存在它回落到web.config中和的app.config

例如

CloudConfigurationManager.GetSetting("StorageConnectionString") 

将目光在StorageConnectionString设置适当的cscfgfile,那么它会搜索web.config中,然后的app.config。