1

我有一个引用托管 dll(用 C# 编写的库)的 Asp.Net 项目(Vb.Net)。该库项目在 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 文件夹?还是其他解决方案?

4

1 回答 1

0

有两种方法可以解决这个问题:

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

  2. 在项目属性中的 Build Events 部分添加类似xcopy "$(ProjectDir)lib\*.*" "$(OutDir)\" /y /e或的命令。xcopy "$(ProjectDir)lib\*.*" "$(TargetDir)" /y这应该将\lib目录从项目根目录复制到输出。

于 2018-07-20T18:00:52.977 回答