2013-11-25 49 views
7

爲了避免此處描述的問題:如何安裝與.net 4.0兼容的json.net版本?

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib

我試圖建立我的項目爲目標的.NET 4.0,而不是4.5(在Visual Studio 2013年),但我得到了以下錯誤:

  • 類型或命名空間名稱「Newtonsoft」找不到(你 缺少using指令或程序集引用?)

    主要參考「 Newtonsoft.Json「無法解析,因爲它是針對」.NETFramework,Version = v4.5「框架構建的。這個 是比當前有針對性的框架「.NETFramework,Version = v4.0」更高的版本。

所以我想安裝一個與.net 4.0兼容的json.net版本。我發現下載的NuGet包除了lib/4.5之外還包含一個lib/4.0目錄,但我無法弄清楚如何讓包管理器使用它而不是4.5版本。

如何使用與.net 4.0兼容的json.net版本替代僅適用於.net 4.5的版本來獲取我的項目解決方案buikd?

回答

4

從軟件包管理器控制檯運行update-package -reinstall

+1

這將安裝最新版本的Newtonsoft.Json軟件包(其中包括所有目標:.net2.0,3.5 4.0,4。5,portable4.0和4.5)然後選擇lib目標你當前的csproj設置。 – Reda

1

我發現做到這一點的方法是:

  1. 閉上你的VS解決方案
  2. 手動編輯的所有文件packages.config在您的解決方案,以指向你想要的版本(例如對於我來說我他們改爲ID =「Newtonsoft.Json」版本=「6.0.3」 targetFramework =「net40」)
  3. 轉到包文件夾在磁盤上爲您的解決方案,並在那裏
  4. 刪除Newtonsoft.Json刪除版本dll和xml從您的解決方案的輸出路徑
  5. 刪除爲
  6. 打開包管理器,在您的解決方案使用json.net項目
  7. 打開Visual Studio中的解決方案的bin目錄(使用菜單:工具,NuGet包管理器,用於管理在溶液中的NuGet包我VS版本)
  8. 在包管理器對話框的頂部,它抱怨mssing包 - 點擊恢復
  9. 轉到包文件夾在磁盤上爲您的解決方案,並檢查其是否安裝正確的版本
  10. 清潔解決方案(否則Newtonsoft.Json dll和xml將不會在輸出路徑中被替換)
  11. 建立和檢查,在輸出路徑的DLL是正確的版本,正確的架構(NewtonSoft提出的.NET版本在文件描述了舊版本)

如果這些步驟可以被優化我想知道如何...