我有一个用 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 实现与其他机器上的不同。我使用进程资源管理器将故障机器与工作机器进行比较,不同之处主要在于故障机器主要具有预编译的程序集,而工作机器则没有。那应该有关系吗?