我有一个用C#编写的COM组件,它调用ConfigurationManager.AppSettings.Get(...) . 此组件在非托管C应用程序中实例化 .
每次,ConfigurationManager.AppSettings都无法读取配置文件 .
可能有两个问题 .
1)应用程序运行时应该调用app.config(即最后带有.config的C exe的名称,或者结尾带有.config的C#类库的名称) .
2)配置文件应该位于何处(即与C#COM组件位于同一文件夹中,或与Cexe相同的文件夹中)
我尝试过对ConfigurationManager.OpenExecConfiguration的各种调用;都失败了 .
我理想的是,它只是在没有代码更改的情况下工作 . 如果做不到这一点,可以明智地调用OpenExeConfiguration,这样我仍然可以使用ConfigurationManager.AppSettings.Get(...)
这可能是冰山一角,因为我想在C#COM组件中使用log4net,它使用自定义配置部分 .
虽然我不介意更改自己的代码以通过配置对象使用访问设置,但我无法更改log4net代码 .
之前有人打过这个吗?有任何想法吗?
2 回答
如果您在应用程序运行时运行procmon(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx),您是否可以看到它正在寻找的* .config文件?
通常,配置文件与C#二进制文件所在的位置相同....当您在包含app.config的项目上运行构建时,会转换为app.exe.config,其中app是名称项目解决方案,以及.NET框架加载和执行时的.EXE文件,从.EXE所在的同一目录中读取配置文件 .