Visual Studio 2008托管增量构建不起作用。

3
我在我的托管C++项目中开启了“托管增量构建”。我有一个用C#编写的DLL,解决方案包含C++和C#项目。我没有定义任何项目之间的依赖关系,但C++项目引用了C# DLL。
问题是,每当重新构建C#项目时,C++项目都会进行完全重建。当这种情况发生时,我会收到以下错误消息:
“无法检查c:\MyProj\MyCScode.dll。假定存在重大更改。”
我在虚拟机上运行Windows 7(这可能是时间问题吗?)。
2个回答

1

我想我已经找到了一个解决方法:

我在每个C++/CLI项目的“C/C++ | General”选项页面中,明确地添加了$(OutDir)到“解析#using引用”。之后,在程序集内部更改的情况下,“无法检查...假定有重大更改。”消息不再出现,并且托管的增量构建按预期工作。


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++源文件进行完全重建。但这比整个项目的完全重建要好。

http://connect.microsoft.com/VisualStudio/feedback/details/511633/vs2008-sp1-always-rebuilds-c-cli-project-that-references-another-c-project-even-for-minor-c-changes# - Nate Kohl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接