我创建了一个类库,其中包含三个其他类必须连接的数据库的实体模型。然后,该类库由三个不同的Web服务和一个网站使用。这些都安装在他们自己的服务器上,因此没有简单的方法让他们共享相同的连接数据。
在我的web.config文件中,我有这一行:
<connectionStrings configSource="Dependencies.ConnectionStrings.Config"/>
这将从单独的XML文件加载连接字符串。它工作正常但它也意味着我现在有这个Dependencies.ConnectionStrings.Config文件的5个不同的副本。我希望在开发过程中使用单个文件。
但是,我的解决方案还包含四个安装项目,在这些设置中,配置文件必须彼此相邻。
那么如何在不修改web.config的情况下告诉VS在多个项目之间共享单个配置文件?
<小时/> 为了使其稍微复杂一些,类库使用app.config来存储连接字符串。我无法告诉app.config将连接字符串链接到单独的配置文件,显然...... 另一个复杂因素是安装后系统管理需要修改连接字符串。那是因为它必须寻找与开发数据库不同的数据库。 (实际上,在开发过程中,我使用3个数据库来分割实体逻辑。测试和生产环境只使用一个数据库。)
答案 0 :(得分:1)
最大的问题是你不能在当前主配置文件上方的文件夹层次结构中有一个链接的配置文件,这使得分享它们很困难。
您是否考虑过将其置于配置层次结构的更高位置 - 可能在root web.config或machine.config中?
另一种选择是让一些预构建事件构建这些文件,因此您不必担心它们的多个副本。当我需要为每个开发人员创建一个不同的连接字符串时,我已经非常成功地使用了prebuild选项。
答案 1 :(得分:1)
我不知道是否可以在不修改文件的情况下做你要求的事情。
我同意如果你有一个可以被所有服务器使用的文件会更好,那么你就不会有版本问题等等。
说实话,整个设置听起来很复杂,如果错误的配置文件最终出现在错误的服务器上,可能会出错。
我很想将连接信息集中在共享数据库中。您可以记录每个服务器应该使用的连接字符串(根据服务器名称存储)。这样每个服务器都知道它可以使用哪些连接字符串。当然,这假设您的服务器都可以联系一个中央数据库服务器(取决于您的设置)。
当然还有其他方法可以获得理想的结果,但我认为如果你“自己动手”而不是试图弯曲内置的应用设置来做你想做的事情,你可以得到更优雅的解决方案。