5

顧客のマシンにインストールされている Office のバージョンに応じて、2 つの異なる Microsoft.Office.Interop アセンブリ (バージョン 11 および 12) を使用したいと考えています。

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

残念ながら、ソリューションを構築しようとすると、警告が表示されます。

"Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" と "Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken" の間の競合を解決する方法がない=71e9bce111e9429c」。「Microsoft.Office.Interop.Excel、Version=12.0.0.0、Culture=neutral、PublicKeyToken=71e9bce111e9429c」を任意に選択します。

4

1 に答える 1

-1

ええ、それはひどいですが、理解できます。COM レス生成用の Open XML SDK を検討することを強くお勧めします。しかし、私は時間の厳しさやその他の要件を理解しています。

同じページにいることを確認するために、 http://www.dotnetperls.com/externをエイリアシングするために私が考えていることは、奇妙な理由でうまくいかない場合です。以下に使用できる別のアプローチがあります。

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

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

于 2013-06-25T14:45:06.277 に答える