我在托管C ++项目中启用了“托管增量构建”。我有一个用C#编写的DLL,该解决方案包含C ++和C#项目。我没有在项目之间定义任何依赖项,但C#DLL由C ++项目引用。
问题是每当重建C#项目时,C ++项目都会进行完全重建。发生这种情况时,我收到此错误消息:
无法检查c:\ MyProj \ MyCScode.dll。假设有重大变化。
我在VM中运行Windows 7(这可能是时间问题吗?)。
答案 0 :(得分:1)
经过一些研究,我的一位同事告诉我,这是Visual Studio 2008 SP1中确认的错误,没有可用的修补程序,并且删除SP1解决了这个问题。但是,我没有任何链接来支持这些信息。
我们的解决方案是从C ++项目移动C#实现文件,并使用自定义构建步骤(使用/ target:module参数到csc.exe)进行编译,并将目标文件包含在C ++源代码中引用我们的托管C#类型的文件,如下所示:
#using "MyCScode.obj"
警告:
netmodule必须使用.obj扩展名,这似乎是Visual Studio确定将为链接器使用哪些输入的方式中的错误(通常你将其称为.netmodule)。
每当更新C#文件时,我们仍然可以完全重建所有具有#using的C ++源文件。但这比完整重建整个项目要好。
答案 1 :(得分:1)
我想我找到了一个解决方法:
我在“C / C ++ |”中明确地将$(OutDir)添加到“Resolve #using References”中每个C ++ / CLI项目的常规“选项页面。在此之后“无法检查......假设发生重大变化”。在程序集内部更改和托管增量构建按预期工作时,消息不再出现。