2009-09-03 2 views
5

お客様のコンピュータにインストールされているOfficeのバージョンに応じて、2つの異なるMicrosoft.Office.Interopアセンブリ(バージョン11および12)を使用したいと考えています。2つの異なるMicrosoft Interopアセンブリを1つのプロジェクトで使用する方法は?

私はこれらの2つのassebliesを私のプロジェクトに追加することができました(私はそれらをloccalyを使用しています - 私のbinフォルダに2つの異なるサブフォルダ内にあります)、私はこのアセンブリでエイリアスを使用して、それらは私のプロジェクトで(それぞれエイリアスはExcel11とExcel12です)。

しかしunfourtunately、私は警告取得していますソリューション構築しようとしています:

「Microsoft.Office.Interop.Excel、 バージョン間の競合を解決する方法を= 12.0.0.0、文化=ニュートラル、 PublicKeyToken = 71e9bce111e9429c "と " Microsoft.Office.Interop.Excel、 バージョン= 11.0.0.0、Culture =ニュートラル、 PublicKeyToken = 71e9bce111e9429c " を選択する "Microsoft.Office.Interop.Excel、 バージョン= 12.0.0.0、文化=ニュートラル、 PublicKeyToken = 71e9bce111e9429c" 任意。

+1

参照プロパティでEmbed interop型をTrueに設定しようとします。 – igelineau

答えて

0

はい、それは総体ですが、わかりやすいものです。私は、COMレス世代向けにOpen XML SDKを検討することを強くお勧めします。しかし、私は時間のクランチと他の要件を理解することができない場合は...ここで私は何をするだろう。

同じページにあることを確認するには、別名のために私が考えていることがあります。何らかの奇妙な理由でそれがうまくいかない場合は、以下に示す別の方法があります。

清潔で新しいプロジェクトを2つ作成することができます。実装する必要のあるバージョンごとに1つ、Excel11、Excel12などのバージョン固有の名前を付けます。

それぞれからアクセスできるようにする関数のラッパークラスを作成すると、派手なダンシーが得られ、ラッパークラスが拡張する独立した共通プロジェクトで抽象クラスを構築することができます。主コードを抽象クラス名で統一します。メインプロジェクトの新しいプロジェクトへの参照を追加するだけで、バージョン、レジストリキーなどを確認しながら、必要なラッパーを選択するだけです。それが役に立てば幸い。

関連する問題