Visual Studio 2008托管增量生成不起作用

时间:2009-10-04 17:13:41

标签: visual-studio-2008 build-process

我在托管C ++项目中启用了“托管增量构建”。我有一个用C#编写的DLL,该解决方案包含C ++和C#项目。我没有在项目之间定义任何依赖项,但C#DLL由C ++项目引用。

问题是每当重建C#项目时,C ++项目都会进行完全重建。发生这种情况时,我收到此错误消息:

  

无法检查c:\ MyProj \ MyCScode.dll。假设有重大变化。

我在VM中运行Windows 7(这可能是时间问题吗?)。

2 个答案:

答案 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项目的常规“选项页面。在此之后“无法检查......假设发生重大变化”。在程序集内部更改和托管增量构建按预期工作时,消息不再出现。