1

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

我在我的一个类中的插件中通过调用隐式加载此配置文件...

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

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

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

更多信息:插件编译为“任何 CPU”,它安装在 Windows 7 x64 上。已安装 32 位版本的 Office 2010 (Outlook)。所有这些参数对于工作版本和不打开配置文件的版本都是正确的。

更多信息(2/21/2012):插件以发布模式构建。在 VS2008 Project Properties>Build 下,勾选“Define TRACE constant”。该解决方案针对 .NET 3.5 Framework。行为似乎是失败的机器上的 System.Diagnostics.TraceSwitch 实现与其他机器上的不同。我使用进程资源管理器将故障机器与工作机器进行比较,不同之处主要在于故障机器主要具有预编译的程序集,而工作机器则没有。那应该有关系吗?

4

1 回答 1

1

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

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

于 2012-02-16T17:31:46.187 回答