2011-03-31 464 views
36

我們目前正在將我們的所有解決方案從2005年遷移到2010年(沒錯,我們正在跳過2008!)。我們也在改變我們的文件結構以使其更有意義(一些常見的項目將嵌套在特定的項目中等)。Visual Studio 2010:無法解析目標框架的mscorlib'.NETFramework,Version = v4.0'

這一切意味着引用需要改變!除此之外,我們還將它們都設置爲.NET 4.0。爲了實現這個目標,我們在同一解決方案中製作了一個臨時的「GOD」解決方案,其中包含所有117個項目

我正在同一個同事這樣做,直到大約2小時前,一切都按計劃進行。然而,我們遇到了117個項目中的一個問題。該項目拒絕在項目屬性中「顯示」它的引用,資源,服務和設置標籤。

我碰到下面的確切消息:

無法解析目標 框架 」 .NETFramework,版本= 4.0' 版的mscorlib。如果目標框架不是 ,或者框架名字對象 格式不正確,則可能發生 。

現在,這是煩人的,但它變得更糟。我的同事在從顛覆中獲得同樣的解決方案時,實際上可以看到並更改引用和事物。事實上,目前這個項目實際上是建立在他的機器上。他承諾進行更改,但我無法構建此特定項目或查看參考資料。

這使我得出了一個簡單的結論,在我的客戶端上有一些事情會導致麻煩!網上的建議,我已經看到如下:安裝

  • 多.NET4.0的版本(這不是我的客戶端的情況下)沒有安裝
  • .NET v3.5版本; v4.0正在嘗試構建v3.5(我的客戶端上安裝了3.5)
  • 註冊表項:OnlyUseLatestCLR已設置並正在搞砸! (掃描我的註冊表,此鍵是不存在的任何地方!)

參見:http://connect.microsoft.com/VisualStudio/feedback/details/542789/

我還沒有嘗試過,我唯一能做的事情又是修復.NET 4.0怎麼過的我很懷疑這個是因爲我們有大約100個我可以編輯和構建的其他項目。 C#和VB.NET。

+0

只是爲了確保:重建所有,重新啓動VS,重新啓動Windows。它有時可以解決最奇怪的錯誤。 – 2011-03-31 11:07:59

+0

不幸的是,我到目前爲止嘗試了幾次,但沒有成功,我很害怕。 – 2011-03-31 12:00:31

+0

這就是我在做什麼時,當我的想法...對不起,它沒有幫助 – 2011-03-31 12:01:56

回答

24

Microsoft Visual Basic for Applications Extensibility 5.3(VBIDE)是惡魔的名字!

顯然這是我的同事不知何故的參考,但我沒有,因爲這個參考,一切都死了。我們發現這一點,因爲如果您在特定項目(這是一個VB.NET項目)中選中「顯示所有文件」,您會看到甜蜜的References文件夾,通常不會出現在VB.Net項目中。在Tab失敗的情況下,該文件夾向我們展示了一個帶有警告的參考。顯然這是編譯器或VS2010無法告訴我的東西,但確實是爲我們搞砸了。

因此,如果您在處理項目時出現此錯誤,請「顯示所有文件」,以便查看參考文件夾,並找出哪些參考可能導致您的問題!

我很高興它發現了這一點,但超過3小時後! >。 <

+0

在我的情況中,我更新了一個引用的DLL,但是項目引用並沒有顯示警告。刪除並重新添加引用 – Aaroninus 2015-06-10 14:29:14

+0

我的同事有這個錯誤,顯然這是由於VS2015安裝期間發生的錯誤。我的辦公室,巧合與否,我不得不在ms office的參考文獻丟失了。糾正該問題並修復參考後,問題就解決了。 – 2016-08-22 11:00:43

+0

謝謝人,它的工作。 – 2017-07-14 06:27:54

0

檢查在項目屬性的目標框架設置正確 - 默認情況下,這是「 NET Framework 4.0客戶端」 - 這可能是你需要」框架4.0"

看到this thread看起來像同樣的問題

,你可能還需要審查this article它涉及利用反射

58

它可能是路徑到您的解決方案是太長調試的問題具有相同的症狀:

含義:

C:\ MyProject的\文件夾\子文件夾...

應該是在 「256字」。

http://wcfvs.blogspot.com/2011/04/could-not-resolve-mscorlib-for-target.html

我發現這個線程,當我有同樣的問題,但沒有參考的問題。我找到了上面的鏈接,它解決了我的問題。希望這可以幫助到此處遇到同樣問題的其他人。

+5

感謝您爲我節省了大量時間。剛剛遇到了這個問題,這就是解決方案。 – RationalGeek 2012-02-06 19:22:59

+3

哇。這是2013年,這對我來說是正確的解決方案。 – 2013-02-26 13:00:41

+2

...我愛你男人 – Sam 2013-08-29 20:24:19

1

發生在資源編輯器中的我。

原因:我是進口一些.Targets文件,它定義了一個名爲AppConfigFile屬性,它可能過寫了同名的一些內部屬性:

<PropertyGroup> 
    <AppConfigFile>...</AppConfigFile> 
</PropertyGroup> 

修復:重命名屬性的一些其它的名字,問題就消失了。

+0

這個答案幫助我的朋友解決他的問題。我投了票。謝謝! :) – 2015-04-10 17:19:05

3

我在我的項目上工作保存了工作,並關閉了visual studio 2010.當再次打開工作時,我得到了這個錯誤,我只是關閉visual studio再次複製了我的項目被保存的文件,我粘貼它somwhere其他(在文件在我的桌面上),我再次打開與VS2010的項目,它工作。

2

我有同樣的問題,並嘗試以上大部分,包括重新安裝.net 4.0和重新啓動仍然沒有消失。

最終通過將我的項目樹移下來解決了它。即。靠近驅動器的根部。發現目錄和文件名太長,我相信引用被截斷,因此無法解決。

問題馬上發生。

0

當源目錄只讀時,我遇到了同樣的問題。如果我將我的工作區與我們的版本控制服務器(Perforce)同步,它將使所有目錄只讀,除非我選擇檢出目錄進行編輯。有時我很懶惰,不要這樣做,因爲我是在任何時間點從事這些項目的唯一人員。但是這個錯誤消除了只讀標誌。

2

我今天有這個問題,解決方案是手動手動編輯Resources.resx文件。

Resources.resx文件是這樣的:

<data name="SomeString" xml:space="preserve"> 
    <value>I am a string</value> 
    </data> 
    <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <data name="MyLogo" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\Resources\MyLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <data name="Open" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\Resources\Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 

原來,Visual Studio的不喜歡<assembly>元素,這是奇怪的考慮到Visual Studio中添加的事實後兩種<data>元素他們在那裏。我的問題得到解決後,我的<assembly>元素之前搬到他們:

<data name="SomeString" xml:space="preserve"> 
    <value>I am a string</value> 
    </data> 
    <data name="MyLogo" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\Resources\MyLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <data name="Open" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
    <value>..\Resources\Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
    </data> 
    <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
0

發生了什麼事我是,我在我的項目的所有引用丟失了,所以我不得不再次插入。

13

我今天早上收到這個錯誤警告。我剛剛重建項目,然後關閉Visual Studio,重新打開它,錯誤消失。

+1

我所要做的只是關閉Visual Studio並重新打開 – 2014-02-07 15:05:10

+2

相信它或不只是做一個重建做到了。我浪費了兩個小時尋找並嘗試其他解決方案,包括重新安裝。啊微軟! – Chiwda 2014-02-19 10:59:42

0

對我來說,只是設置Target Framework 4.0解決了我的問題。有時目標框架以某種方式清晰。這可能會導致問題。

0

今天我遇到了這個問題,它證明是由於項目文件名太長造成的。

這反過來又是由一些服務引用引起的。 當導入或更新服務引用時,visual studio會生成.datasource文件,其中的文件名是完全限定名稱。這意味着在某些情況下名字很長。

通過使用Google搜索,我發現提示刪除這些文件是安全的。 檢查thisthis了。

刪除這些.datasource文件消除了這個問題。

0

我正在將一個vb.net項目遷移到VS 2015.我也有同樣的問題。問題不在.Net框架中,因爲我能夠創建一個針對特定框架版本的新項目,並且它成功了。

就我而言,該項目引用了FPSpreadADO和一些其他類似的庫。一旦我刪除這些引用,它工作得很好。

1

從.NET 4.5到.NET 4.6.2時,我在Visual Studio 2013中遇到了這個問題。問題項目是一個網站項目。

Visual Studio自動運行一些生成Reference.svcmap的工具。在Reference.cs始於:

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.42000 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

只是挑選新的.NET版本造成的Visual Studio清理生成的文件,而不是填充的內容了。我嘗試了以上所有解決方案,但都沒有成功。最終我選擇了.NET 4.5.1,然後是.NET 4.6.2,並且該工具確實運行。文件中的差異僅僅是註釋中工具的版本號,所以我可以從GIT中恢復文件。

0

我在XamarinForms PCL項目中有類似的錯誤。
我發現錯誤是關於該項目的參考。我將xamarin.forms更新爲最新版本,由於某些原因,NuGet無法從項目文件(xml)中刪除所有以前版本的引用。
所以,只是我從項目文件中刪除了以下行,它工作!

<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" /> 

希望它可以幫助別人......

1

我有同樣的問題,在我的項目(網絡)服務的參考。 「更新服務參考」和「配置服務參考」都不再有效。

那麼我們只需將(web)服務引用丟棄並重新創建即可。不行!相同的錯誤消息。

解決方案:編輯項目文件並刪除與服務引用有關的所有內容。

說明:

  • 轉到解決方案資源管理器,在項目名稱上和 右鍵選擇「卸載項目」。
  • 轉到解決方案資源管理器,右鍵點擊項目名稱 並選擇「編輯YourProjectName.proj」
  • 與有事情做與您的(網絡)服務引用刪除每一個元素。 (通常它包含文本「服務參考」)
  • 轉到解決方案資源管理器並右鍵單擊項目名稱,然後選擇「重新加載項目」()。
  • 現在再次添加您的(網絡)服務參考。

問題解決了(當然是在我的情況)。

我對可能發生什麼的猜測:我在我的web服務的某處更改了一個類。界面沒有改變,Visual Studio也沒有看到改變。 (緩存?)配置不再匹配,配置/重建/刪除(網絡)服務失敗。

0

我也有這個錯誤。 (「無法解析目標框架的mscorlib.NetFramework 4.5.1'。如果目標框架未安裝或者框架名字對象的格式不正確,就會發生這種情況。」)。

在VB 2013項目中將框架從3.5更改爲4.5.1時發生這種情況。 解決方案是刪除.vbproj文件中的所有引用:標記爲Reference和COMReference組的所有引用。

當然,在做完這些之後,項目中出現了其他所有錯誤。

然後我開始在同一個地方一個一個地複製它們,從備份中複製,以便確定它們之間哪些是有問題的(我複製了與我得到的新錯誤相關的那些爲了解決它們),每次刷新項目直到受影響的窗口正確顯示。

它導致他們是一些自定義的庫引用造成了這個問題。 我希望這可以幫助某人。 乾杯!

開發人員。

相關問題