12

我正在使用控制台应用程序为一些半自动化测试编写一个测试平台,但我需要从我正在测试的项目中获取连接字符串。我不想直接引用其他应用程序,或者在我正在测试的项目中有访问器。

到目前为止,我所做的是在我的 TestUtility 项目中创建指向另一个项目的 Web.config 文件的链接,并将其设置为Copy if newer. 它是我的测试项目的根文件夹中唯一的 Web.config,但WebConfigurationManager.OpenWebConfiguration(null)似乎正在打开一些 OTHER Web.config,因为其中唯一的连接字符串指的是 .\SQLEXPRESS(不在我的解决方案的任何文件中,我的路径将是 . \sql2008 在此配置中 - 这会有所不同)。

关于如何从另一个项目访问该配置部分的任何提示或提示?

(耶第一个问题)

4

2 回答 2

22

迟到总比不到好:

var filePath = @"D:\PathToConfig\Web.config";
var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
var configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

我不能把这个归功于这个,我在这里找到了它!

于 2014-07-01T13:30:41.473 回答
3

我找到的解决方案是将其打开XDocument并手动解析:

        XDocument xdoc = XDocument.Load("Test/Web.config");

        var path = xdoc.Element("configuration").Element("connectionStrings").Element("add").Attribute("connectionString").Value;

尽管如果您有多个连接字符串,您可能希望.Elements("add")在元素上使用该方法connectionStrings 并遍历各种字符串。

于 2013-04-05T17:19:18.553 回答