大量の背景情報で申し訳ありませんが、これはかなり具体的な質問です。
.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 の新しいバージョンを見つけようとするため、古き良き「ファイルまたはアセンブリを読み込めませんでした」というエラーが表示されて失敗します。
私がやりたいことは可能ですか?