2

我正在设置一个引用 DLL 的项目,当最终安装应用程序时,这些 DLL 将位于与我正在构建的库不同的文件夹中。这意味着应用程序目录将包含所有可执行文件,并且在子文件夹中将是我现在正在构建的库(实际上很多)。

我的问题是,当我指向新库项目中的引用时,这似乎强制假设引用将出现在与库相同的目录中,这意味着我之前提到的子文件夹。但实际上,并非如此。它将被安装到主应用程序文件夹中,因为它是应用程序本身的一部分。

所以现在可能很清楚我在说什么。如何在项目中进行引用,导致库在执行时在层次结构中查找文件一个文件夹?我通过手动编辑 *.proj 文件来完成此操作,但这看起来很混乱,并且是潜在错误的根源。更不用说我必须做大约160个。这是很多工作。

是否有一种纯粹的 Visual Studio 界面方式来指向参考?顺便说一句,我不能依赖 GAC 或任何类似的东西。我必须指出我自己的参考资料集合,这些参考资料只是在我从中提取的文件夹中。

先感谢您!

4

1 回答 1

1

您可以在初始化期间订阅 AssemblyResolve(exe 的 Main/Web 应用程序的 Application_Start 等)并在您想要的任何路径中手动搜索,如下所示:

    AppDomain.CurrentDomain.AssemblyResolve += (s, e) =>
    {
        var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        var files = Directory.GetFiles(basePath, e.Name + ".dll", SearchOption.AllDirectories);
        return files.Length == 1 ? Assembly.LoadFile(files[0]) : null;
    };
于 2013-04-02T15:40:53.480 回答