7

Autodesk Inventor 用のアドインを開発しています。当社のソフトウェアは、実行時に Inventor にロードされる一連の dll アセンブリです。ログ記録と例外処理に Microsoft Enterprise Library 5.0 を使用することにしました。

Inventor 2013 が Enterprise Library 4.1 を使用していることが判明したため、問題が発生しました。Inventor の Bin ディレクトリに古いバージョンが既にあるため、アドインをロードするときに、適切なバージョンのアセンブリをロードできません。

これまでに検討したオプション:

  1. 製品の配置中に、Inventor の Bin フォルダにある古いライブラリを上書きします。
  2. アセンブリで EL 4.1 を使用する

どちらも下手でアイデアが尽きたので、助けを求めています。

オプション 1 では、次の疑問が生じます。Enterprise Library は後方互換性がありますか? Bin フォルダー内の DLL を置き換えると問題が発生しますか? 試してみましたが、Inventor は文句を言わず、期待どおりに動作します (EL 機能をチェックしていません)。

オプション 2 では、古いバージョンを使用し、Autodesk が使用しているバージョンにバインドするため、Autodesk がアップグレードする時期、特に Inventor の新しいバージョンをリリースする時期を監視する必要があります。

このシナリオでのベスト プラクティスは何ですか?

更新:
Enterprise Library の新しいバージョンを GAC に配置するだけで、これを解決しました。ここで起こったことは、.NET が最初に古いバージョンを読み込もうとしたことだと思います (アセンブリの検索順序が高かったため)。GAC では、正しく解決されます。

4

1 に答える 1

4

私が見る限り、合理的な解決策は、アセンブリを埋め込み、ResourceManager クラスを使用してアセンブリにアクセスすることです。これにより、親プロジェクトのログ メカニズムを維持しながら、新しいバージョンを使用できるようになります。

この質問は役に立つかもしれません: Embeding assembly inside another assembly

于 2012-11-14T11:02:51.463 に答える