Visual Studio 混合项目调试

Visual Studio mixed projects debugging

我有一个主要基于 C# 项目的解决方案,但我偶尔会需要使用用本机 c++ 编写的库。我解决这个问题的方法是让一个本地项目简单地充当本地库的包装器,在本例中是 OpenCV(我知道我可以直接在 C# 中使用 EMGUCV,但根据我的经验,它有一些我想要的错误避免,无论如何这更像是一个概念证明)。然后我有一个引用本机包装器的 C++ CLR 项目,最后是一个引用 C++ CLR 项目的 C# 项目。
严格来说,我可以直接从 CLR 项目中引用 OpenCV 而不是使用本机包装器项目,但我想以这种方式组织它,既要符合解决方案其余部分的组织方式,又因为我可能在某些时候出于其他原因想要拥有这种结构。

这种方法的第一个问题是我无法找到一种方法让 Visual Studio 自动将本机包装器的 dll 包含在最终目标目录中。从 CLR 项目引用本机项目工作完美,从 C# 项目引用 CLR 项目没有问题,但是当我构建它时它不会 运行 因为本机 dll 没有带到最终目标。我通过添加一些 post 构建操作来复制本机 dll 和 pdb 文件来解决这个问题。这行得通,而且我能够 运行 没有错误的代码。但是,我无法调试本机项目。我在 C# 项目和 CLR 项目中遇到了断点,但在本机项目中却没有。

我尝试过的:

问题是我之前提到的C#项目本身就是一个被另一个C#exe项目调用的dll。当我为这个项目启用本机调试时,一切都按预期工作。