2

サードパーティ ライブラリの 3 つの異なるバージョンを間接的に使用する必要があるプロジェクトがあります。これらのバージョンは互いに互換性がないため、バインディング リダイレクトを使用できません。正確な.dllファイルである必要があります。(ライブラリはSpire.DocSpire.XLS & Spire.PDFです。Spire.PDF DLL は 3 つすべてから参照されます)

3 つのコンポーネントを個別のラッパー プロジェクトに分割し、ライブラリ内のあらゆるものへの直接参照をラップするクラスを作成しました。ただし、これは私の問題を解決しません。「消費する」プロジェクトは、bin実行するためにすべてのライブラリをフォルダーにコピーする必要があります。ビルド プロセスはコピーするバージョンを認識しないため、最新のバージョンをコピーするだけです。これにより、間違った DLL が存在するためにランタイム例外が発生します。

私が検討したこと/試したこと:

  • 特定のバージョンへのバインディング リダイレクトの追加 (ライブラリの正確なバージョンが見つからないため、実行時例外)
  • ビルド後の手順を使用して、ラッパー プロジェクトをマージします (ここでも、ライブラリ DLL が存在しないというランタイム例外が発生します)。
  • アプリケーションの各部分に対して個別のコンソール アプリケーションを作成し、それらを個別に呼び出す - これは複雑な最後の手段であり、私は本当にやりたくありません!

extern エイリアスが役立つ可能性があることを読みましたが、私が知る限り、異なる名前のアセンブリしか区別できません。Spire.PDF ライブラリは、各プロジェクトで同じ名前 (および同じ署名済み公開トークン) を持っています。

これら 3 つの異なるバージョンのライブラリを同じソリューションで個別に使用するにはどうすればよいですか?

編集:

依存ライブラリのコードを変更する能力がないため、この問題は提案された複製とは少し異なります。Spire.Doc は、Spire.PDF と Spire.XLS の異なるバージョンに依存しています。

4

1 に答える 1