私はOSの展開とカタログファイルへのアクセスに使用されるMicrosoft DLL(Microsoft.ComponentStudio.ComponentPlatformImplementation.dll)を使用するアプリケーションを持っています。バージョン6.0.0.0は、Windows Server 2008のカタログファイルに固有です。新しいバージョン6.1.0.0は、Windows Server 2008 R2のカタログファイルに固有です。不正なバージョンのカタログファイルにアクセスしようとすると、例外が発生します。複数のDLLバージョンに対応する
私のアプリケーション(VS.NETを使用しているVB.NET)は、これらのカタログのいずれかのバージョンにアクセスできる必要があります - 私は2つの実行可能ファイル(各カタログバージョンごとに1つ)に満足していますが、それぞれのソースコードのセット。
DLLの名前が同一であるため、プロジェクト参照で両方のDLLセットを指定することはできません。むしろ手動でDLLの参照を追加したり削除したりする必要はありません。私が知っている限り、インターフェイスなどは2つの間で事実上同じです。
私はここや他の箇所でbindingRedirect、Assembly.Loadなどについていくつかの記事を読んだことがありますが、何も実を結びつけていないようです。
返信いただきありがとうございます。しかし私のレベルの専門知識は、私を前進させるには十分ではありません。 Assembly.Loadを使用する場合、プロジェクトの参照にDLLを指定する必要がありますか?もしそうなら、通常のエラーメッセージを出さずに同じDLLの複数のバージョンをどのように組み込むのですか? Assembly.Load関数でDLLへのパスを指定する方法がない場合は、 また、アセンブリを使用しています。ロードしても、これらのアセンブリでIntellisenseを使用できますか? ありがとう! –
いいえ、参照にライブラリを指定していません。すべての静的ランタイムサポートはなくなりました。DLLからの型の変数をもう宣言することはできませんし、Intellisenseを使用することはできません。指定されたパスからアセンブリをロードする方法については、KB 837908を参照してください。 –
Martin、ご協力いただきありがとうございます。私は最終的に、Assembly.Loadなどで混乱する必要のないソリューションを見つけました。 乾杯、 ShadeSeeker。 –