2011-03-03 120 views
5

我有一個針對.NET 3.5的開發項目。我沒有選擇這個,因爲企業大佬們不會讓我們瞄準4.0。我在Visual Studio 2010中的解決方案中添加了一個新的測試項目。我發現我只能從測試項目(這沒關係,因爲沒有部署)定位到4.0 Framework。VS2010中的單元測試3.5項目會產生CS1685警告

一切都很好,只是我從我的測試項目中獲得的編譯器警告:

警告CS1685:預定義類型「System.Action」在全球的別名多個組件定義;使用定義從'c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Core.dll'

我從測試項目中刪除了對System.Core的引用,警告仍然存在發生。我只能假設這是因爲我正在測試的項目是以3.5爲目標的,所以有些東西正在越過。在我們獲得批准在我們的應用中定位4.0之後,是否有一種清除方法可以消除此警告?

回答

5

這聽起來像你正在使用MSTest作爲你的單元測試框架。如果是這樣,問題在於MSTest不支持在Visual Studio 2010中關閉定向。這意味着即使您的測試目標爲3.5,它也會加載4.0版本的.Net程序集。這會導致由於在此方案中加載的多個版本的System.Core而導致的衝突。

很遺憾,除了將項目升級到4.0以外,沒有辦法解決此問題。

+0

任何方法來壓制警告?我可以接受這種情況,直到我們升級,如果我們可以從列表中獲得警告。他們正在混淆名單,並且難以確定我們應該處理的合法CA警告。 – SonOfPirate 2011-03-03 18:50:21

+1

@SonOfPirate您應該能夠通過手動將''元素添加到相關的csproj文件中來禁止它們。您需要手動編輯.csproj文件才能執行此操作。 – JaredPar 2011-03-03 18:53:49

+0

這個伎倆! – SonOfPirate 2011-03-03 19:26:09