2009-10-04 45 views
3

我在託管C++項目中打開了「託管增量構建」。我有一個用C#編寫的DLL,解決方案包含C++和C#項目。我沒有定義任何項目之間的依賴關係,但C++ DLL被C++項目引用。Visual Studio 2008託管增量構建不起作用

問題是,無論何時重建C#項目,C++項目都會執行完全重建。發生這種情況時出現此錯誤消息:

無法檢查c:\ MyProj \ MyCScode.dll。假設重大變化。

我在虛擬機中運行Windows 7(這可能是計時問題?)。

回答

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++源文件。但這比完整重建整個項目要好。

+0

http://connect.microsoft.com/VisualStudio/feedback/details/511633/vs2008-sp1-always-rebuilds-c-cli-project-that-references-another-c-project-even-for-minor -C-變化# – 2010-06-04 13:07:18

1

我想我已經找到了解決辦法:

我明確地添加$(OUTDIR),以「解析#using引用」中的「C/C++ |每個C++/CLI項目的「常規」選項頁面。在此之後,「無法檢查......假設有重大變化」。消息在裝配內部更改的情況下不再出現,並且管理的增量構建按預期工作。

相關問題