如何将依赖项从库项目复制到主项目?

How can I copy dependencies from a library project to the main project?

我有一个 Asp.Net 项目 (Vb.Net),它引用了一个托管 dll(用 C# 编写的库)。该库项目在 lib 文件夹中有几个非托管依赖 dll(在构建期间复制到 bin/Release/lib 文件夹)。该库不是主要解决方案的一部分。

我的库使用引用非托管 dll 的 [DllImport]。但是为了找到非托管 dll,我调用了 SetDllDirectory():

        string path = // don't know how to generate the path
        SetDllDirectory(path);

我正在努力生成非托管 dll 及其依赖项的路径。我可以从我的主要项目 bin 文件夹或其他东西开始。但是接下来我该怎么办?例如。有没有办法将非托管 dll 从库的 bin/Release/lib 文件夹复制到我的主项目的 bin 文件夹?或者其他一些解决方案?

您可以通过两种方式解决此问题:

  1. 将Dll作为文件添加到VS项目中,然后将Build Action设置为None,将Copy to output directory设置为Copy。这应该确保复制引用库的任何外部依赖项。

  2. xcopy "$(ProjectDir)lib\*.*" "$(OutDir)\" /y /excopy "$(ProjectDir)lib\*.*" "$(TargetDir)" /y 之类的命令添加到项目属性中的“构建事件”部分。这应该将 \lib 目录从项目根目录复制到输出。