0

今天下午我遇到了一個奇怪的問題......我有一個混合模式庫,用VS2008構建得很好。我正在轉換到VS2010,並嘗試使用VS2010 IDE來構建這個庫。正如所料,IDE告訴我,該解決方案需要轉換爲VS2010,我讓它做到這一點...沒有在轉換錯誤。我去建立這個庫,似乎有一個編譯指令問題,或者編譯過程無法識別託管代碼中的非託管代碼。 (例子...當引入一個託管標頭時,我看到一個錯誤:cannot convert int to System::String^其中有一個類方法,它將System::String^作爲其參數之一,並將成員變量設置爲其值)。無法編譯在VS2010中編譯VS2008並使用MSBuild編譯的混合模式C++/CLR庫

好吧,現在退後一步,返回解決方案/項目文件,然後再轉換。打開VS2010命令提示符並使用MSBuild嘗試構建解決方案,而不先將其轉換。一切正常。

?嗯?

在項目文件中顯然有一些變化,但是什麼?爲什麼IDE不能在不轉換項目文件的情況下構建項目,但MSBuild在沒有咳嗽的情況下突然冒出來?顯然,我希望能夠使用IDE編輯我的源代碼 - 有沒有其他人有過類似的經歷或者之前聽說過這個問題?任何想法如何解決它?

+0

問:你確定你的項目中的所有引用都OK? 「參考文獻」是MSVS「轉換」項目時可能會丟失的第一個東西之一;) – paulsm4 2012-08-08 22:34:08

+0

@ paulsm4是的,檢查了這一點。實際上我竟然打印了項目文件,試圖看看我是否可以在視覺上辨別任何可能會使它發出cro,聲的東西,但無濟於事。 :( 不要誤解我的意思,我從命令行編譯沒有問題,但是我對庫有一些額外的/更改,而且我真的不想這樣構建。 – Will 2012-08-08 22:36:23

回答

0

您是否已將轉換後項目的設置與VS2010中新創建的項目的設置進行了比較,並檢查了這些差異?

用鼠標右鍵單擊該項目,去屬性,並檢查像「平臺工具集」,並確保它設置爲「v100」,並在相同的頁面上啓用「公共語言運行時支持」等。與新的工作項目進行比較。

您也可以右鍵單擊項目,卸載它,再次右鍵單擊並編輯'vcxproj'文件,並查看是否有任何遺漏/錯誤。

如果一切都失敗了,我會創建一個新項目並手動複製所有代碼,如果這是一個轉換問題,那麼這肯定會起作用。

這些鏈接可能幫助:
Migrating a C++/CLI Project to Visual Studio 2010
Moving a C++ Project from VS2008 to VS2010
Migrating a C++/CLI project from VS2008 to 2010

+0

我傾向於那裏的選項#3(新項目和複製代碼),看看它是否具體是轉換過程。過去幾天我沒有時間重新訪問,但希望有時間給它一個今天下午試試。 – Will 2012-08-14 14:48:59