【发布时间】:2016-08-02 07:56:20
【问题描述】:
当您在 Visual Studio 中将 C# 项目引用(我们称之为 LibraryProject)添加到另一个 C# 项目 (MainProject) 时,程序集 LibraryProject.dll 会自动复制到 MainProject 输出目录,从而启用它在 MainProject 中的使用无需进一步的用户干预。 如果 LibraryProject 是 C++ 项目,如何以可靠且独立于项目的方式进行操作? - 也就是说,无需手动指定构建后事件来复制生成的 DLL(哪个位置取决于多个其他设置)到主项目目录(该位置也取决于某些设置,甚至在单个解决方案中可能有多个可运行程序集[测试项目、控制台工具等],只有部分或全部需要访问 LibraryProject )?
或者,如示例中所述:
在我的解决方案中有一个 C++ 库项目 (MyCppLibrary),以及该库的 C# 包装器项目 (MyCSharpWrapper)。还有一个主 C# 项目 (MyCSharpApplication) 和一个 C# 单元测试项目 (MyCSharpTests)。
当我从 MyCSharpApplication 或 MyCSharpTests 引用 MyCSharpWrapper 时,我希望不仅有 MyCSharpWrapper.dll ,但也将 MyCppLibrary.dll 复制到 MyCSharpApplication 和/或 MyCSharpTests 的相应输出目录(或以其他方式可访问)。我希望这一切都自动发生,而无需在 MyCSharpApplication 或 MyCSharpTests 上设置构建后事件来半手动复制 DLL。
编辑:
我不是在问如何从 C# 调用 C++ 代码 - 我知道 DllImportAttribute 以及如何使用它。当 MyCSharpWrapper 从另一个项目中引用时,我想知道如何指示 Visual Studio 自动将 MyCppLibrary.dll 复制到输出目录。
【问题讨论】:
-
我记得唯一的方法是创建一个 dll 文件并对其进行引用,或者使用 dllimport 语句,因为库是 c# 以外的其他语言
标签: c# .net visual-studio visual-c++ interop