2016-05-08 2 views
0

COMインターフェイスを使用して.NETアセンブリを作成しています。理想的には、レジストリキーをアセンブリから分離して、リリースを実行するだけで共有ドライブに.dllをドロップする必要があります(毎回MSIをプッシュする必要はありません)。COMがCOM呼び出し中にアセンブリを再利用できないようにする

私は、メインクラスからそれぞれの環境ごとに異なるGUIDを取得します。

しかし、これをテストすると、ロードされた最初のバージョン(たとえば開発)は、後で他の環境(たとえばtest)の呼び出しを処理します。これは通常は問題ではありませんが、このコンポーネントを使用すると、GUI実行可能ファイルを実行中の全日中から呼び出されます。おそらく、人々は一日を通してさまざまな環境を走っている可能性があります。

各インターフェイスはレジストリ(GACなし)に独立したコードベースセットを持ち、プロセスモニタは両方のアセンブリがロードされ、最初のものだけが使用されることを示します。 .NETは同じクラス/アセンブリ名を参照していて、ロードされた最初のものを再利用しているからです。

どのようにこの状況でアセンブリを分離できますか?

答えて

-1

Visual Studioでプロジェクトプロパティの「署名」タブをAuthenticode署名と混同しないように厳密な名前を付けて、異なるバージョン/環境のバージョン番号、公開キー、またはその両方を変更できます。この方法では、CLRアセンブリローダーはそれらを異なるとみなし、指定されたコンテキストで既にロードされているローダーにバインドしません。

関連する問題