2011-12-28 16 views
2

私はMicrosoft.SqlServer.SMO.dllを使用してプロジェクトを作成していますが、これは常にbinディレクトリにコピーします(CopyLocalはtrueに設定されています)。C#アセンブリの場所解決

ただし、異なるバージョンのSQL SMOがインストールされていることがあります。 Thayは同じアセンブリバージョン(10.0.0.0)を持っていますが、異なるファイルバージョン(10.0.1600.22と10.50.2500.0)を持っています。エンドユーザーはアセンブリの古いバージョンをGACにインストールしているかもしれませんが、ビンから常に10.50をロードする必要があります。

だから、私は次のような状況があります。私のアプリが動作しているとき

Bin -> 10.50.2500.0 
GAC -> 10.0.1600.22 

、GACからのアセンブリがロードされているが、ビンから無視されます。

どうすればこのような現象を防ぐことができますか?どうもありがとう。

+0

CLRは[AssemblyVersion]にのみ注意します。ファイルバージョンは無視されます。したがって、GACのものが常に最初に見つけられ、受け入れられます。これが本当に重要な場合は、アンインストールする必要があります。 –

答えて

1

「bin」の場所を明示的に使用することをアプリケーションに明示するためのマニフェストを提供することができます。これは中規模のトピックですが、これはあなたを始められる良いリンクです。

http://msdn.microsoft.com/en-us/library/1w45z383.aspx

1

それはすべてのバージョンの制限についてです。あなたはdllバージョン10.50.2500.0を参照していますが、これは正確にこのバージョンでなければならないということは何も言っていません。

だから、あなたが参照しているアセンブリのプロパティで特定のバージョンをtrueに設定する必要があります。これにより、このバージョンが正確にロードされることが保証されます

+0

厳密な型指定は、参照されているアセンブリの特定のバージョンとは何が関係していますか? –

関連する問題