目前遇到个问题是,dll使用app.config配置,从配置中读取的信息可以使用,但是如果我在vs外部修改了配置文件的值,不编译程序的情况下,更改后的值无效,我是想做到修改配置文件的内容后,程序不需要编译也可以使用更改后的值,目前我的做法是将配置信息放到调用方(即客户端配置,这样感觉怪怪的)请大侠帮帮忙。
楼主,如果可以的话,您可以先用txt的方式读取,那个的话,只要每次的流都重新读取了就没问题,可以保证每次都是最新的数据,
关于app.config的话,我正在帮您研究如何能在每次在做的时候重新加载一下app.config,我觉得这个是关键问题的所在。
txt方式,你指的是dll读取该类库下文件方式吗,我刚在尝试读取资源文件。总是返回null。
string xmlNamespace = "JDD.Bank.CMBFbSdk"; //XML文件所在的命名空间
string xmlPath = "JDD.Bank.CMBFbSdk.xx.xml"; //XML文件的路径( namespace + filename )
Assembly myAssembly = Assembly.Load(xmlNamespace);
Stream strm = myAssembly.GetManifestResourceStream(xmlPath);
Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(@"JDD.Bank.CMBFbSdk.xx.xml");
关键代码:
namespace JDD.Bank.CMBFbSdk.Common { internal static class ConfigManager { readonly static bool _Error; static Configuration _AppConfig; static ConfigManager() { string dllPath = string.Format( "{0}\\{1}.dll", AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory, "JDD.Bank.CMBFbSdk"); try { _AppConfig = ConfigurationManager.OpenExeConfiguration(dllPath); } catch(ConfigurationErrorsException) { _Error = true; } } public static KeyValueConfigurationCollection AppSettings { get { if (_Error) return null; return _AppConfig.AppSettings.Settings; } } public static ConnectionStringSettingsCollection ConnectionStrings { get { if (_Error) return null; return _AppConfig.ConnectionStrings.ConnectionStrings; } } public static T GetSection<T>(string name) where T : ConfigurationSection { if (_Error) return null; return _AppConfig.GetSection(name) as T; } } }