通过VS 2010中的多个项目对本机dll资源进行级联复制

时间:2013-10-30 12:30:12

标签: c# visual-studio-2010 dllimport dllexport

你好,我有一个由几个小项目组成的项目解决方案。这些项目通过以下方式与其他项目相关:

(1)具有设备控制功能的本机非托管C ++ DLL

由...使用

(2)C#Project将原生函数包装到.Net

由...使用

(3)将特殊设备的适配器包装到由框架

定义的更一般的抽象层

由...使用

(4)一个简单的示例实现尝试通过抽象框架

使用此本机设备接口

现在问题:原生dll(1)被添加到.Net包装项目(2)中作为“现有项目”,其中“build event = content”和“copy to output ... = always”as“Hans Passant”在this problem solution中设置它。本机dll通过DllImportAttribute在此包装器中使用。这适用于这个项目。 dll将被复制到输出目录,可以通过包装器找到。

包装器(2)用作适配器包装器项目(3)中的“引用”,并且原生dll(1)也被复制到输出目录,并且可以被.Net包装器找到并使用( 2)。 但是...

..当我将简单示例项目(4)作为“引用”添加到简单示例项目(4)时,本机dll(1)将不会被复制到此示例项目的输出目录中(4) )。因此.Net包装器(2)将找不到dll并导致System.DllNotFoundException。

我的问题是:如何将这项工作,当我将适配器包装项目(3)添加到另一个项目时,所有必需的dll都在输出目录中(包括本机dll(1)) ),被复制到引用项目输出目录?而这没有将原生dll作为资源添加到示例实现中,如Marc Gravell所述。

非常感谢,J

1 个答案:

答案 0 :(得分:1)

也许我错过了什么,但是如果要将每个项目的输出路径更改为一个常见的“bin”文件夹呢?