在通过 COM 互操作使用程序集时,我无法在 .NET 中加载配置设置。
背景:我们在一些服务器上使用了大量的 VBScript 脚本来执行各种任务。通常,它们执行诸如发送电子邮件之类的功能。为了促进这一点,我想创建一个可从 VBScript 创建的 COM 对象,这将有助于其中一些常见的功能集。
因此,我正在尝试创建一个通过互操作公开一些 COM 接口的 .NET 程序集。我设法让这个工作,但后来想外部化(而不是硬编码)一些配置设置。
我正在使用这一行来检索配置:
ConfigurationManager.OpenExeConfiguration(this.GetType().Assembly.Location)
当我从测试项目中对其进行测试并将其作为 .NET 项目进行引用时,这似乎可以正常工作,但如果我将其作为 COM 对象进行测试,则会失败。
失败的原因是在我的配置文件中,我有一个自定义部分:
<section name="CustomSection" type="COMObjects.CustomSection, COMObject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e9e8071519bd2f04"/>
但是,当它尝试加载自定义部分时,它无法加载程序集“COMObject”。对我来说,这是有道理的,因为我没有将程序集放在 GAC 中(我也不想),所以很难找到它。
有没有办法帮助 .NET 框架找到配置文件中引用的程序集,例如这种情况?
下面是绑定的 fuslogvw.exe 输出:
操作失败。 绑定结果:hr = 0x80070002。该系统找不到指定的文件。 从以下位置加载程序集管理器:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 在可执行文件 C:\Windows\SysWOW64\cscript.exe 下运行 --- 详细的错误日志如下。 === 预绑定状态信息 === 日志:用户 = 我的机器\我 日志:DisplayName = COMObject,版本=1.0.0.0,文化=中性,PublicKeyToken=e9e8071519bd2f03 (完全指定) 日志:Appbase = file:///C:/Windows/SysWOW64/ 日志:初始 PrivatePath = NULL 日志:动态基础 = NULL 日志:缓存基础 = NULL 日志:AppName = NULL 调用程序集:System.Configuration,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a。 LOG:此绑定在默认加载上下文中开始。 LOG:未找到应用程序配置文件。 日志:使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config 中的机器配置文件。 LOG:之前看到过相同的绑定,但由于 hr = 0x80070002 失败。 ERR:预下载检查期间发生不可恢复的错误(hr = 0x80070002)。
谢谢