我有一个用C#,MyAddin.dll编写的Outlook加载项,它有一个配置文件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&gt; Build下,选中“Define TRACE constant”。该解决方案面向.NET 3.5 Framework。行为似乎是,此失败的计算机上的System.Diagnostics.TraceSwitch实现与其他计算机上的实现不同。我已经使用进程资源管理器将故障机器与工作机器进行比较,不同之处主要在于故障机器主要是预编译组件,而工作机器则没有。那有关系吗?
答案 0 :(得分:1)
您能否更明确地告诉您的代码使用ConfigurationChannelFactory查找配置信息?
http://msdn.microsoft.com/en-us/library/dd575430%28v=VS.100%29.aspx