2017-12-08 51 views
2

私は.NETアプリケーションを開発しています。アプリケーションはマネージライブラリを使用します。アプリケーションは、このライブラリの特定のバージョンでのみ動作します。.NETにGACの代わりにアプリケーションと一緒にアセンブリを使用させる

現在、私はアプリケーションの横にライブラリのDLLファイルのコピーを含めています。これは、ユーザーがライブラリをインストールしていない場合に問題ありません。問題は、ユーザーにライブラリの別のバージョンがインストールされている場合、アプリケーションはアプリケーションの横に含まれているバージョンではなく、そのバージョンを使用することです。

この動作を無効または無効にするにはどうすればよいですか?私はそれをグーグルで試してみたが、私が見つけた唯一の答えは、管理されていないアセンブリに関連するか、インストールされていないライブラリのパスを指定することにあるようです。

EDIT:もう少し調査しましたが、ライブラリの2つのバージョンが同じバージョン番号と公開鍵トークンを持っていることが分かりました。したがって、システムがそれらを区別する方法はありません。ですから、基本的には、GACのバージョンではなく、提供されているバージョンを使用するように強制する必要があります。

+2

これは、.NETがどのように動作するかではなく、** exact **バージョンの一致がある場合にのみ、GACからDLLを使用することになります。 app.configファイルにbindingRedirectがないことを確認してください。また、作者が[AssemblyVersion]を実際に変更して、ファイルのバージョンを変更していないことを確認してください。彼がそれをしたら、あなたはうんざりです。 –

+0

バインディングリダイレクトはありません。アプリケーションの横にあるGACの代わりに、GACのものを使用していることを確認できます。ライブラリのアセンブリバージョンが実際に異なっていることはかなり確信していますが、これを確認する方法はありますか? –

+0

Fuslogvw.exeを使用して、アセンブリ解決の問題のトラブルシューティングを行います。すべてのバインドを記録すると、CLRが行った決定を見ることができます。あなたにギリシャ語のように見える場合は、あなたの質問にトレースを投稿してください。 –

答えて

-1

の特定のバージョンに設定してみてください。

このプロパティは、アセンブリへの参照のプロパティペインで設定できます。

+0

これはコンパイル時にのみ役割を果たします。 –

+0

既に試してみましたが動作しません。 –

関連する問題