1

大量の背景情報で申し訳ありませんが、これはかなり具体的な質問です。

.dll ファイルを作成する Visual Studio 2005 プロジェクトがあります。このプロジェクトは、BigCorp のソフトウェアと共にインストールされる別の会社 "BigCorp" の .dll に依存しています。

理想的には、私が作成する dll は、BigCorp の dll の (下位互換性のある) どのバージョンでも使用できる必要があります。つまり、バージョン 4.3.2.100 にリンクすると、.dll がバージョン 4.3.3.20 になるようにユーザーが BigCorp のアプリをアップグレードしても、私のプログラムは動作するはずです。

これは、プロジェクトの参照を見て、.dll を選択し、「特定のバージョン」プロパティが false であることを確認することにより、VS2005 で十分に簡単です。

私の実際の質問:プロジェクトをビルドしているマシンにインストールされているバージョンよりも古い.dll のベース バージョンを指定することは可能ですか? 前の例を続けると、私のビルド マシンにはバージョン 4.3.3.20 がインストールされていますが、生成される .dll が、アップグレードされていないインストールと互換性があり、バージョン 4.3.2.100 のみがインストールされている必要があります。

VS は .dll へのパスを解決し、見つかったファイルに基づいてランタイム バージョンを検出するようです。.vbproj または .csproj でバージョン番号を直接指定して上書きしようとしています。つまり、

<Reference Include="BigCorp.Program.Component, Version=4.3.2.100, Culture=neutral, PublicKeyToken=abc123def456654fed321cba, processorArchitecture=MSIL">

効果はありません。古いバージョンのコンピューターにアセンブリを登録しようとすると、BigCorp の .dll の新しいバージョンを見つけようとするため、古き良き「ファイルまたはアセンブリを読み込めませんでした」というエラーが表示されて失敗します。

私がやりたいことは可能ですか?

4

1 に答える 1

1

これは、古い DLL をプロジェクトから直接参照することで実行できるため、.dll ファイルをプロジェクトにコピーし、そこから参照します。

これは、さまざまな開発プロジェクトで常に行っています。通常、プロジェクト内に「参照」フォルダーを配置して、参照される DLL を保持します。

于 2008-10-20T18:10:45.767 に答える