我正在使用Console应用程序为一些半自动化测试编写测试平台,但我需要从我正在测试的项目中获取连接字符串。我不想直接引用其他应用程序,或者在我正在测试的项目中有一个访问者。
到目前为止我设法做的是创建一个指向我的TestUtility项目中其他项目的Web.config文件的链接,并且我已将其设置为Copy if newer
。它是我测试项目的根文件夹中唯一的Web.config,但WebConfigurationManager.OpenWebConfiguration(null)
似乎打开了一些OTHER Web.config,因为它中唯一的连接字符串是指。\ SQLEXPRESS(不在我的解决方案的任何文件中,我的路径将是。\ sql2008在此配置中 - 这会有所不同。)
有关如何从其他项目访问该配置部分的任何提示或提示?
(耶的第一个问题)
答案 0 :(得分:19)
迟到总比没有好:
var filePath = @"D:\PathToConfig\Web.config";
var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
var configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
虽然我不能为此拍摄,但我发现它here!
答案 1 :(得分:3)
我找到的解决方案是将其作为XDocument
打开并手动解析:
XDocument xdoc = XDocument.Load("Test/Web.config");
var path = xdoc.Element("configuration").Element("connectionStrings").Element("add").Attribute("connectionString").Value;
虽然如果你有多个连接字符串,你可能希望在.Elements("add")
元素上使用connectionStrings
方法并迭代各种字符串。