次の (単純化された) ファイル レイアウトを持つ Windows、C++ ソフトウェア プロジェクト (Visual Studio 2005、SP1 でビルド) があります。
{App. Root Directory}
|-- bin
| |-- Microsoft.VC80.CRT
| +-- Microsoft.VC80.MFC
+-- utils
binディレクトリとutilsディレクトリの両方に存在するさまざまな実行可能ファイルがあります。これらの実行可能ファイルはそれぞれ、binに格納されているサイド バイ サイド アセンブリ (C++ ランタイム DLL) に依存していますが、さまざまな理由からこれらの個別のフォルダーに分離しています (たとえば、utilsフォルダー内の exe は補助ツールです)。頻繁に実行されることはありません)。このファイル構成の直接的な結果として、utilsフォルダー内のアプリは、適切な side-by-side アセンブリがインストールされていないシステムでは実行できません (通常、「システムは指定されたプログラムを実行できません」というメッセージで失敗します)。エラーメッセージ)。
私の質問: utilsフォルダー内のアプリに、..\bin
フォルダー内で適切なサイド バイ サイド アセンブリを明示的に検索するように指示する方法はありますか? MicrosoftのAssembly Searching Sequenceの記事では、これが可能かどうかについては言及されていません。これらのアプリケーションのこのランタイム要件を解決できる賢い方法はありますか?
私が見る潜在的なオプション:
- side-by-side アセンブリのコピーをutilsフォルダーに配置します。これは実行時に行うこともできますが (アプリケーションのインストール パッケージが肥大化するのを防ぐため)、少し面倒です。
- ランタイム DLL を静的にリンクします。やりたくない!
- エンド ユーザーに、通常の再配布可能パッケージをインストールしてもらいます。これもやらないほうがいいです。