有没有办法在同一个解决方案中从c#项目引用c ++项目?

时间:2014-06-09 04:03:05

标签: c# visual-studio visual-c++

在我的解决方案中,我们在c#中控制一些GUI和网络工作,以及管理一些硬件交互的c ++。在我的c#项目中,我有正确的PInvokes并且能够使用c ++输出dll没有问题但是为了做到这一点,我必须手动将输出dll复制到构建目录或创建管理副本的构建脚本。

我对这种方法的问题在于,实际上,该解决方案有许多项目,目前类似150项,涵盖c ++,c,c#和vb.net。我们一直在创建和删除项目,管理复制脚本正成为一个巨大的痛苦。特别是因为并非所有项目都相互依赖,我们有20种不同的构建配置。

是否可以简单地让c#项目引用c ++项目并自动复制项目输出,就像使用其他托管项目一样,而不使用后期构建脚本?

1 个答案:

答案 0 :(得分:0)

好吧,我这样做并且一直都是这样做的,显然是使用Visual Studio,假设这个C ++项目是VS项目,你可以轻松地创建一个包含多个项目的VS解决方案,你可以用这些项目来组织&#34;解决方案文件夹&#34 ;.解决方案中的项目组织实际上取决于您希望如何组织它。它类似于具有嵌套文件夹的文件系统。毋庸置疑,您可以使用不同语言(如C ++,C#,VB)托管项目......我不太确定您是否可以包含C项目,这是我的专长。< / p>

请参阅我创建的解决方案的屏幕截图,以演示此...

enter image description here

enter image description here

请注意&#34; Business&#34;有一个嵌套的解决方案文件夹(Utils),它包含一个C ++项目(ERM.CPPLibraries)和一个VB项目(ERM.VBLibraries)。然后,如果您在解决方案中引用项目(右键单击 - &gt;添加引用),则每次编译解决方案(或项目)时都不需要复制输出程序集.VS足够聪明,可以解析所有依赖项,解决它们并更新它们。

希望它能给你一个想法

根据评论进行编辑

简单来说......不,它无法在VS解决方案中从托管项目引用非托管项目。您可以引用DLL但不能引用项目