1

Outlook 2007 プラグインを作成し、Visual Studio 2010 のセットアップ プロジェクトを使用して Windows 7 にインストールできました。インストールしたすべての Windows 7 マシンで問題なく動作しました。以前に 2 台の XP マシンにも正常にインストールしましたが、仮想マシン上にある 1 つの XP インスタンスで問題が発生しています。

AddInSpy は、依存関係の 1 つを読み込めなかったため、このアドインを Outlook で読み込むことができなかったことを示しています。

Add-in DLL path is not found. System.BadImageFormatException: Could not load file or assembly 'file:///C:\Program Files\blah\blah\MyAddIn.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

プラグインが依存している他の依存関係のいずれでもないように、開始したことを示すメッセージ ボックスをポップアップ表示する単純なアドインを作成しましたが、同じエラー メッセージが表示されます。

「このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込めません」と思われます。AddInSpy によって生成されたエラー ログの後半にあるように、原因は次のとおりです。

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
...
Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config

.NET 4 クライアント プロファイル (プラグインが使用するように構築されています) をインストールし、このマシンで拡張しましたが、ログによると、.NET 2 を使用しようとしています。VSTO2010 ランタイムと Office 2007 Primary Interop もインストールしました。アセンブリ。

私の質問は次のとおりだと思います。なぜ.NET2を使用しようとしているのでしょうか? .NET4 を使用するにはどうすればよいですか? また、インストーラーが正しいバージョンを使用するようにするにはどうすればよいですか?

4

1 に答える 1

3

このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされています

それがコアエラーメッセージです。Outlook に読み込まれている別のプラグインとの戦いで、レースに負けました。それは最初で、バージョン 2 CLR をロードしました。アドインはバージョン 4 CLR でのみ動作します。

1 つの修正は、そのアドインを削除することです。もう 1 つは、Outlookが常にバージョン 4 の CLR を読み込むようにすることです。これには、バージョン 2 にはない機能があり、複数の CLR をロードできます。これを強制するには、Office ディレクトリに outlook.exe.config ファイルが必要です。すでに存在する可能性があります (確かではありません) ので、既存のものを見つけたら編集してください。次のエントリを含める必要があります。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
于 2012-05-10T05:14:24.220 に答える