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>
クラスの 1 つでアドインの呼び出しを使用して、この構成ファイルを暗黙的にロードします...
internal static TraceSwitch myTraceSwitch =
new TraceSwitch("MySwitch", "My Trace Level Switch");
私が言ったように、これは多くのインストールで機能しますが、少数では機能しません. PROCMON を実行して、構成ファイルのファイル イベントを監視しました。ファイルが読み込まれるシステムでは、PROCMON がトレースに表示します。ロードされないシステムでは、PROCMON は設定ファイルについて何も表示しません。
C# でコンパイルされたアプリケーション拡張機能 (DLL) が、あるインスタンスでは正しく読み込まれるのに、別のインスタンスでは構成ファイルを読み込もうとしないのはなぜですか? または、これを診断するための提案をお願いできますか? どこを見るかなど
詳細: アドインは「任意の CPU」でコンパイルされ、Windows 7 x64 にインストールされます。Office 2010 (Outlook) の 32 ビット バージョンがインストールされています。これらのパラメーターはすべて、作業バージョンと構成ファイルを開かないバージョンの両方に当てはまります。
詳細(2012/2/21): アドインはリリースモードでビルドされています。VS2008 Project Properties>Build の下で、「Define TRACE constant」がチェックされます。このソリューションは、.NET 3.5 Framework を対象としています。これが失敗したマシンでの System.Diagnostics.TraceSwitch の実装は、他のマシンとは異なるようです。プロセス エクスプローラーを使用して、故障したマシンと動作中のマシンを比較しましたが、主な違いは、故障したマシンにはほとんどプリコンパイル済みのアセンブリがあり、動作中のマシンには含まれていないことです。それは重要ですか?