这是我之前关于F# Type Providers and Continuous Integration的问题的一个(实际上是几个)后续问题。
在我看来,使用SqlDataConnection
类型提供程序作为编译时检查代码/数据库完整性在功能分支驱动的开发中保持不变是一个好主意;假设构建数据库也是 CI 过程的一部分,您会在每次提交/构建时知道没有对尚未应用于数据库的代码进行任何更改。
但是,出现了几个问题:
配置文件的名称(以及位置)在编译时与运行时不同,例如 app.config -> MyApp.exe.config,如果尝试使用会导致运行时错误
SqlDataConnection<ConnectionStringName="DbConnection", ConfigFile="app.config">
(实际上,
ConfigFile="app.config"
不需要指定,因为它是默认值。)通过将 app.config 文件复制到输出目录(有一个设置)可以避免运行时错误,但这会导致输出目录中同时存在 app.config 和 MyApp.exe.config 文件。不是很漂亮。为类型提供程序添加单独的配置文件将是另一种解决方案,但恕我直言,这也不是很漂亮。
问题:有没有人想出一个更优雅的解决方案来解决这个问题?
当您来到构建服务器时,会出现下一个问题。您很可能不想在开发时针对相同的数据库进行编译,因此需要不同的连接字符串。是的,在生产中你还需要另一个。
问题:您如何以最方便的方式解决这个问题?请记住,解决方案必须是 CI 流程的工作部分!
这种策略需要在构建服务器的每个构建上生成数据库,可能来自带有一些功能/冲刺更新脚本的基线脚本。
问题:有没有人尝试过这个,它是如何影响构建时间的?如果是,您是如何创建此步骤的?