11

ここに画像の説明を入力

複数のプロジェクトを含むソリューションがあります。2 つの異なるプロジェクトで同じアセンブリの異なるバージョンを参照する必要があります。現在のところ、dll の最新バージョンのみが bin フォルダーにコピーされています。そのため、古いバージョンに依存する dll はエラーで失敗します

Could not load file or assembly xxxx or one of its dependencies.
The located assembly's manifest definition does not match the 
assembly reference.

プロジェクトに基づいて特定のバージョンの dll を使用するようにアプリケーションを取得する方法はありますか?

4

2 に答える 2

4

はい、各プロジェクトで同じ dll の特定のバージョンを参照することができます。両方のバージョンの dll を GAC に入れることをお勧めします。参照しているプロジェクトで、Copy Local = false および Specific Version = true に設定します。

構成ファイルとアセンブリ バインディング ディレクティブを使用して GAC なしで実行することもできますが(共有 dll は同じ名前であるため、同じフォルダーに配置できないため)、これは GAC が解決するように設計された主な問題の 1 つです。 . ですので、積極的に活用することをお勧めします。

于 2013-07-30T18:21:17.843 に答える
0

対象ユーザーによっては (これがサーバー アプリ、Web サイト、単一ユーザー向けのデスクトップ アプリ、多数のユーザー向けのデスクトップ アプリなどである場合)、少しごまかして、1 つのバージョンを完全に別のアプリ ドメインでホストすることができる場合があります。 Web サービスまたは WCF サービスのように。

たとえば、プロジェクトが Web アプリケーションであるとします。

MyWebApplication
    - DLL reference to MyLibrary v1.0
    - Only have internal references which use v1.0 of the library
    - WCF proxy to http://localhost/MyWebService

MyWebService
    - DLL reference to MyLibrary v2.0
    - Only have internal references which use v2.0 of the library
于 2013-07-30T18:21:24.820 に答える