为什么获胜';t某些计算机上的DLL.config文件加载

本文关键字:DLL config 加载 文件 计算机 获胜 为什么 | 更新日期: 2023-09-27 18:25:03

我有一个用C#编写的Outlook外接程序MyAddin.dll,它有一个配置文件MyAddin.dll.config。两者都存储在同一目录中。它们被放置在那里,并由安装人员进行安装。在大多数安装中,查找和读取配置文件没有问题。但是,在少数安装(完全相同的版本、安装等)中,.config从未打开。

配置文件内容如下。。。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
      ...
    </configSections>
    <system.diagnostics>
      <switches>
        <add name="MySwitch" value="4" />
      </switches>
    </system.diagnostics>
</configuration>

我在我的一个类的addin中使用调用隐式加载了这个配置文件。。。

internal static TraceSwitch myTraceSwitch = 
    new TraceSwitch("MySwitch", "My Trace Level Switch");

正如我所说,这适用于许多装置,但不适用于少数装置。我已经运行PROCMON来监视配置文件上的文件事件。在加载文件的系统上,PROCMON会在跟踪中显示该文件。在没有加载的系统上,PROCMON没有显示配置文件。

为什么我的C#编译的应用程序扩展(DLL)会在一个实例中正确加载,但甚至不会尝试在另一个实例加载配置文件?或者,你能提供诊断建议吗?在哪里看等

更多信息:外接程序编译为"任何CPU",它安装在Windows 7 x64上。已安装32位版本的Office 2010(Outlook)。对于工作版本和未打开配置文件的版本,所有这些参数都为true。

更多信息(2/21/2012):插件是在发布模式下构建的。在VS2008项目属性>生成下,选中"定义TRACE常量"。该解决方案针对.NET 3.5 Framework。行为似乎是发生故障的计算机上的System.Diagnostics.TraceSwitch实现与其他计算机上的不同。我已经使用流程资源管理器将失败的机器与工作的机器进行了比较,区别主要在于失败的机器大多具有预编译的程序集,而工作的机器则没有。这有关系吗?

为什么获胜';t某些计算机上的DLL.config文件加载

您能更明确地告诉代码使用ConfigurationChannelFactory查找配置信息吗?

http://msdn.microsoft.com/en-us/library/dd575430%28v=VS.100%29.aspx