如何动态自定义.net .config文件

时间:2012-06-13 15:21:37

标签: .net sql-server-2008 web-config app-config transformation

我是一个小型开发团队的一员,我们目前正在从一个共享相同开发数据库的模型转变为我们拥有自己的个人开发数据库的模型。

正因为如此,我们正试图弄清楚如何管理web和app .config文件以适应各个数据库。显然,我们希望避免每个人都需要手动更改连接字符串以指向他们自己的数据库然后记得在重新登记之前将其更改回来的情况!

我确信这是几乎所有开发团队都面临的一个非常普遍的问题。尽管如此,我找不到任何解决这个问题的方法。

我熟悉使用xdt语法的web.config转换,虽然这有助于修改文件,但它(据我所知)并没有提供一种注入外部参数值的方法。例如,我们需要转换来检测当前用户,并将.config中的数据库名称替换为包含其用户名的数据库名称。

那么,如何在开发团队中解决这个问题?

感谢。

编辑:

抱歉,我错过了一条相当重要的信息,阻止这些答案被接受。作为一家公司,我们都将远程和远程桌面工作到我们的开发环境中。我们有效地拥有一台(强大的)开发机器,所有开发人员都可以同时使用它。因此,使用别名或修改主机文件等将同等地应用于所有用户,并且不提供必要的个性化定制。 SQL实例已经是本地实例,它只是所有开发人员使用的机器上的本地实例。

5 个答案:

答案 0 :(得分:1)

我可以建议两种方法。

  1. 对数据库服务器名称使用相同的别名,以便连接字符串相同,您可以通过将以下行放入hosts文件来执行此操作:

    127.0.0.1 DBSERVER

  2. 将连接字符串放入外部文件中,不要将其添加到源代码管理中。对于登台和发布配置,您可以通过Web配置转换添加所需的连接字符串。

  3. 在第二种情况下,您的web.config将如下所示:

    <connectionStrings configSource="connectionStrings.config"></connectionStrings>
    

    编辑: 其中connectionStrings.config文件放在同一文件夹中但被添加到源控件下的忽略列表中,以便每个开发人员都拥有自己的此文件副本,并且他的更改不会影响其他开发人员。为简化起见,您可以创建一个可用作模板的connectionStrings.config.default文件,以便在新开发人员加入项目时,他将基于此文件使用默认值创建自己的connectionStrings.config副本。

答案 1 :(得分:0)

一个选项可能是使用命名连接字符串,并在machine.config而不是web.config中定义了这些字符串。

答案 2 :(得分:0)

此问题的常见解决方案是在每个用户开发计算机上安装开发数据库,​​以便您可以为每个人提供相同的连接字符串,例如对于SQL Server,它将类似于:

connectionString="data source=.\SQLExpress;..." 

执行此操作时,您希望每个开发人员都拥有最新的数据库,因此您应该真正了解Visual Studio 2010数据库项目,这使得它非常简单(仅限SQL Server)。

答案 3 :(得分:0)

我们使用的技术是在开发机器上标准化数据库名称,服务器名称(没有命名实例),用户名和密码。

因此,如果产品代号为Aero,我们将使用

  

服务器=(本地);数据库=航空; UID =航空;密码=密码

对于开发环境,安全性并不重要,但一致性是这种技术,这种技术可以避免检查并破坏其他人的app / web.configs。

答案 4 :(得分:0)

虽然我们使用web.config转换来定义已使用的数据库(本地开发,测试,发布),但每个开发人员都可以根据需要使用本地SQL服务器。我们通过设置SQL服务器别名,Web配置连接字符串是相同的,开发人员在他们的机器上设置别名。

例如,我们在web.config中设置了“tester1”,然后开发人员将别名设置为本地SQL服务器,这里是图像:

enter image description here