2013-02-26 189 views
13

我們開發了一個包含VS 2010的35個項目的大型解決方案,現在我們正在考慮遷移到VS 2012 Ultimate。 我將解決方案文件轉換爲VS 2012,一般情況下,一切正常。Visual Studio 2012:無法引用項目

但每當我開解,我得到的解決方案一定的項目中一些警告: 「項目X不能引用」 「項目Y不能引用」 ... 其中A具有項目引用X和Y. 當我構建解決方案時,出現無法找到各個DLL的元數據的錯誤。

當我在解決方案資源管理器中查看參考時,它們標有黃色警告符號。 只要單擊參考,警告消失,圖標看起來很正常。然後,我可以建立沒有錯誤!

每次打開解決方案時都會出現問題,受影響的項目總是相同。

有沒有人遇到過這種奇怪的行爲? 再次刪除和添加項目引用沒有幫助...

在此先感謝您。

編輯:我檢查了引用項目的csproj文件,我不知道所有具有上述問題的項目引用GUID寫入小寫字母,其他項目大寫。

<ProjectReference Include="..\Presentation.Net\Presentation.Net.csproj"> 
    <Project>{04004c6b-76c8-4f2d-9fcf-5a866bb80fd4}</Project> 
    <Name>CMS.Presentation.Net</Name> 
</ProjectReference> 

雖然解決方案中的GUID是大寫:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presentation.Net", "Presentation.Net\Presentation.Net.csproj", "{04004C6B-76C8-4F2D-9FCF-5A866BB80FD4}" 

任何想法?

+0

參考文獻是同一解決方案的一部分嗎?可以做一個乾淨的解決方案,這些項目直到構建完成纔可用? – 2013-02-26 13:09:49

+0

引用的項目與引用項目處於相同的解決方案。無論如何,我從來沒有遇到VS10的這些問題,並且自那時起解決方案結構沒有改變。清潔解決方案不會有幫助。 – mbue 2013-02-26 13:20:21

+0

請儘量避免呼叫VS2012只是VS12。這與人們稱之爲問題的相反(雖然它是在測試版中)VS2011,因爲它的版本號*是* 11.因此,如果/當Visual Studio有V.Next時,它可能(在Beta)被稱爲Visual Studio 12. – 2013-02-26 14:19:56

回答

3

這使我指出了正確的方向。 Visual Studio 2012 Randomly reporting: "The referenced component X could not be found"

至少警告消失。必須檢查元數據錯誤是否會再次發生。

+0

我一直有同樣的問題,即使是VS2013,它也顯然不是固定的,儘管連接錯誤說了什麼。它在命令行msbuild或2013 IDE中顯示爲缺少元數據錯誤,這是由於未能構建相關項目而導致的。我們也一直無法弄清楚爲什麼有些人會得到大寫的guid,而其他人在IDE中添加ref時會得到小寫的guid。隔離加載項並沒有幫助。所以:我們目前的'修復'是對我們的csproj全局的大寫項目ref guid的全局powershell腳本。可愛。 – scobi 2013-12-03 18:23:26

3

VS 2012對一些較舊的項目類型的支持下降。並非VS 2012中的所有VS 2010項目類型都受支持。例如,MSI設置項目類型已被InstallShield LE項目類型取代。 Check the compatibility list here並查看是否有任何失敗的項目類型是問題。

+1

嗨喬丹,引用項目是一個Windows可執行文件,被引用的項目是類庫。在兼容性列表中沒有看到任何問題。 – mbue 2013-02-26 14:40:41

0

嘗試清理項目/解決方案,然後構建它。

0

當我遇到這個問題時,這是由於項目之間的.NET版本不同。您需要確保您嘗試引用的項目與當前項目具有兼容的.NET版本。

例如,如果您的目標項目是.NET 4.5.2,並且您引用的項目位於4.6,那麼您可以得到此錯誤,因爲所引用的項目正在使用當前項目無法訪問的組件。

要解決它,只需轉到目標項目的屬性並選擇正確的兼容版本的.NET。對於我的解決方案中的所有項目,我都爲它們中的每一個維護相同的.NET版本,特別是如果它們互相引用。

相關問題