0

Microsoft Excel VBAで参照できるように、COMに登録される.NETアセンブリを作成中です。

アセンブリはGACにないサードパーティの.NETアセンブリ(いくつかの有用なクラスを含む)を参照しますが、サードパーティのアセンブリへのパスが常ににあるとは限らないため、アセンブリの展開に問題があります同じ場所(ユーザーのロケールと、サードパーティのアセンブリがインストールされた最近の状況によって異なります)。

つまり、(REGASMを使用して)アセンブリを展開する場合、インストール先のシステムによっては、アセンブリがサードパーティのアセンブリに依存していることが見つからなかったため、REGASMがフォールオーバーすることがあります。

理想的には、アセンブリでアーリーバインディングを使用したいのですが、これを実行し、サードパーティアセンブリへのパスがVisual Studioの参照と同じでない場合、REGASMは失敗します。

「ローカルコピー」(VS)でこれを解決できることはわかっていますが、サードパーティのアセンブリにパッチが適用されることがあるため、アセンブリと同じフォルダに古いバージョンを保持したくありません。

「ローカルコピー」を使用する必要がないように、これを回避する方法はありますか?サードパーティのアセンブリのある種の動的ロードを使用できると思いますが、それでも早期バインディングを使用できますか?(そしてREGASMは機能しますか?)

4

1 に答える 1

0

初めて使用する場合は「ローカルコピー」を使用し、アプリケーションの起動時に、新しいバージョンが存在する可能性のある場所のリストを調べて、ローカルアセンブリをオーバーライドする(またはアクセスできない場合はオーバーライドをスケジュールするなど)ルーチンを用意してください。もし可能なら。

また、dllを開く場所を手動で設定するオプションをユーザーに提供してから、常に(またはオンデマンドで)新しいバージョンを確認することもできます。

もう1つの側面は、アプリケーションの機能が特定のバージョンに依存している場合に、なぜ新しいアセンブリを更新する必要があるのか​​ということです。なぜなら、アプリケーションが機能を変更したり、プログラムの機能を強化したりすると、更新が原因で失敗するからです。 。

于 2010-07-10T22:44:59.817 に答える