Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++/更新引用的c#dll时,CLI项目始终会完全重建_C#_C++_Visual C++_C++ Cli - Fatal编程技术网

C++/更新引用的c#dll时,CLI项目始终会完全重建

C++/更新引用的c#dll时,CLI项目始终会完全重建,c#,c++,visual-c++,c++-cli,C#,C++,Visual C++,C++ Cli,我现在有一个C++/CLI项目,其中包含多个源文件。我有一个单独的c#项目,我在c++/CLI项目中添加了它作为参考,并在一个.cpp文件中使用了c#代码中的方法 当我更新c#代码时,我发现c++/CLI项目已经完全重建,即使源文件没有引用c#代码。MSBuild在输出中记录与以下类似的消息 将编译Interface.cpp,因为$somepath\Helper.dll已被删除 修改为$time 我最初希望它能重建或构建我在项目中引用的特定C++文件。有没有办法解决这个问题 编辑: 我在一个单独

我现在有一个C++/CLI项目,其中包含多个源文件。我有一个单独的c#项目,我在c++/CLI项目中添加了它作为参考,并在一个.cpp文件中使用了c#代码中的方法

当我更新c#代码时,我发现c++/CLI项目已经完全重建,即使源文件没有引用c#代码。MSBuild在输出中记录与以下类似的消息

将编译Interface.cpp,因为$somepath\Helper.dll已被删除 修改为$time

<>我最初希望它能重建或构建我在项目中引用的特定C++文件。有没有办法解决这个问题

编辑:

我在一个单独的c++/cli项目中编写了特定的c#方法,并尝试在我原来的c++/cli项目中引用它。使用这种方法,只有当头文件中的某些内容发生更改(如添加新方法)时,才能重建原始项目

将编译Interface.cpp,因为$somepath\Helper.dll.metagen被删除 修改为$time


如果更改cpp文件中现有方法的主体,则不会进行重建。在引用c#dll时希望实现相同的行为。

该metagen文件表示您已经将“启用托管增量构建”选项设置为“是”。这就是责任所在。它往往是一个很好的问题,表明你正在编译太多的本地C++代码,其中CL/CLR实际上是有效的。在它自己的DLL或静态库中隔离这样的代码,这样它就能得到优化器的完全喜爱,这一直是一个好主意。明白了。只是,即使是一次意外的保存或一个非常小的更改(如c#project上的拼写错误修复)也会启动cpp项目的重建,这相当大,需要一段时间来编译/链接。如果没有办法解决,那么我可能必须寻找一种不同的方法来实现我想要的。metagen文件说您已经将“启用托管增量构建”选项设置为“是”。这就是责任所在。它往往是一个很好的问题,表明你正在编译太多的本地C++代码,其中CL/CLR实际上是有效的。在它自己的DLL或静态库中隔离这样的代码,这样它就能得到优化器的完全喜爱,这一直是一个好主意。明白了。只是,即使是一次意外的保存或一个非常小的更改(如c#project上的拼写错误修复)也会启动cpp项目的重建,这相当大,需要一段时间来编译/链接。如果没有办法,那么我可能不得不寻找一种不同的方式来实现我想要的。