我有一个 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文件夹中的应用程序无法在尚未安装适当的并行程序集的系统上运行(它们失败并显示通常的“系统无法执行指定的程序”错误信息)。
我的问题:有没有办法告诉utils文件夹中的应用程序明确地在..\bin
文件夹中查找适当的并排程序集?Microsoft的Assembly Searching Sequence文章没有提到这是否可能。有没有一种聪明的方法可以解决这些应用程序的运行时要求?
我看到的潜在选择:
- 将并行程序集的副本放入utils文件夹中。这可以在运行时完成(以防止我们的应用程序安装包膨胀),但看起来有点脏。
- 静态链接运行时 DLL。我不想这样做!
- 让最终用户安装通常的可再发行包。我也不想这样做。