首页 文章

C#COM组件在加载到非托管C应用程序时无法读取配置

提问于
浏览
2

我有一个用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 回答

  • 1

    如果您在应用程序运行时运行procmon(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx),您是否可以看到它正在寻找的* .config文件?

  • 0

    通常,配置文件与C#二进制文件所在的位置相同....当您在包含app.config的项目上运行构建时,会转换为app.exe.config,其中app是名称项目解决方案,以及.NET框架加载和执行时的.EXE文件,从.EXE所在的同一目录中读取配置文件 .

相关问题