有没有办法使用 Slow Cheetah 来转换 Azure Worker Role 中的 app.config?
Posted
技术标签:
【中文标题】有没有办法使用 Slow Cheetah 来转换 Azure Worker Role 中的 app.config?【英文标题】:Is there a way to use Slow Cheetah to transform app.config in Azure Worker Role? 【发布时间】:2012-04-03 01:07:09 【问题描述】:我正在尝试使用 Slow Cheetah 在本地数据库连接字符串和 SQL Azure 连接字符串之间切换。这是我正在通过 TeamCity 推送到 Azure 的 Azure 工作者角色。当我查看日志文件时,Slow Cheetah 进程正在正确运行并且正在生成转换后的 app.config,但是未来的构建步骤(我认为我无法控制)正在使用原始 app.config 写入转换后的文件.
有没有其他人用这种方法取得过任何成功,或者你能指出另一种方法来切换我的连接字符串。我被指出只使用一个连接字符串并编辑主机文件以指向我想要的数据库,但这似乎很乱。
【问题讨论】:
如果您对此功能感兴趣,请在slowcheetah.uservoice.com/forums/185106-general/suggestions/…投票 Slow Cheetah 的最新版本有效。如果可以,请使用服务配置。但是,我的要求是集成来自第三方产品的自定义配置部分。 【参考方案1】:我同意 Monochrome 的连接字符串应该放在服务配置中,但是在某些情况下,您需要一些与连接字符串无关的配置更改,这些更改应该仅在部署到 Azure 时应用。例如,在我自己的一个项目中,我需要在部署到 Azure 时更改一些 log4net 配置。
我发现 this article 解释了如何使 SlowCheetah 与 Worker Role 项目和 Windows Azure 一起工作。您需要对 Azure 项目文件进行少量更改以复制转换后的配置文件。
<Target Name="CopyWorkerRoleConfigurations" BeforeTargets="AfterPackageComputeService">
<Copy SourceFiles="..\WorkerRoleName\bin\$(Configuration)\WorkerRoleName.dll.config" DestinationFolder="$(IntermediateOutputPath)WorkerRoleName" OverwriteReadOnlyFiles="true" />
</Target>
</Project>
您可能需要调整 SourceFiles 属性以适应您的目录结构。但仅此而已。
【讨论】:
【参考方案2】:在处理 Azure 的生产和测试/本地环境时,最佳做法是将此类配置信息存储在服务配置文件中,而不是 web.config。您可以根据需要创建任意数量的服务配置文件,然后在发布解决方案时通过 GUI 或 cspack 选择所需的 .cscfg 文件。默认情况下,Visual Studio 中的 Azure 模板提供两个 .cscfg 文件:
ServiceConfiguration.Cloud.cscfg ServiceConfiguration.Local.cscfg您可以使用这些现有文件添加两个不同的连接字符串条目,或创建自己的。您可以将连接字符串值存储在 .cscfg 文件中,如下所示:
<ConfigurationSettings>
<Setting name="DbConnectionString" value="blah" />
</ConfigurationSettings>
然后,你可以在你的代码中获取配置设置条目的值,如下所示:
RoleEnvironment.GetConfigurationSettingValue("DbConnectionString")
下面这个场景的相关 MSDN 主题:
Configuring Roles for Windows Azure ServiceConfiguration Schema【讨论】:
这是一个更简单的解决方案,我最终还是使用了它并放弃了我的 Slow Cheetah 努力。一种 hack,但为了支持自动部署到 azure,我只是将配置文件名硬编码到构建脚本中。谢谢单色。以上是关于有没有办法使用 Slow Cheetah 来转换 Azure Worker Role 中的 app.config?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone Cheetah 3D OpenGL ES 顶点缓冲对象 (VBO) 示例
有没有办法通过放大 GraphQL 转换 @searchable 注释来控制自动生成的弹性搜索索引?
Slow HTTP Denial of Service Attack 漏洞解决办法
我们如何在 Cheetah 中预编译基本模板,以便 #include、#extends 和 #import 在 Weby 中正常工作