如何在DLL位于其他目录中时添加项目引用

时间:2013-04-02 15:25:34

标签: c# dll visual-studio-2012

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

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

所以我现在可能已经明白了。如何在项目中创建一个引用,使库在执行时在层次结构中查找一个文件夹?我通过手动编辑* .proj文件来做到这一点,但这看起来很混乱并且是潜在错误的来源。更不用说我必须做其中的160个。这是很多工作。

是否有纯粹的Visual Studio界面方式指向引用?顺便说一句,我不能依赖GAC或任何此类事情。我必须指向我自己的引用集合,这些引用只是在我绘制的文件夹中。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

    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;
    };
相关问题