在一臺機器上,其中較舊的版本工作得很好,將新版本的同一項目從源代碼管理中拉出,運行nuget package restore(寫入在project.lock.json
文件),然後試圖建立這樣的輸出錯誤:編譯錯誤/ DNX多個引用/ Nuget鎖定文件錯誤
Error CS1703
Multiple assemblies with equivalent identity have been imported:
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll' and
'C:\Users\[username]\.dnx\packages\System.Runtime\4.0.0\ref\dotnet\System.Runtime.dll'.
Remove one of the duplicate references.
我明白它想告訴我什麼,System.Runtime.dll
是進口的兩倍。我不明白的是如何讓Visual Studio 2015來修復它。
我可以在該項目中找到的唯一區別是在project.lock.json
文件中。將工作項目與非工作項目進行比較顯示了這樣的結果。工作文件是在左邊:
所以,從我的理解,在右邊的不正確鎖定文件是在告訴的NuGet嘗試使用新的.NET核心的東西,而左邊的一個在說「使用.NET Framework 4.5」?
該項目正在使用「ASP.NET 5 RC1 Update 1」。我也很困惑,ASP.NET 5應該使用新的.NEt核心的東西,而不是「框架4.5」?如果是這樣的話,那麼「不正確」的鎖定文件對我來說似乎是正確的,因爲它的目標是「ref/dotnet」?
將工作project.lock.json
文件複製到非工作文件上允許構建項目,但這不是解決方案以解決本書中的問題。這個項目或機器環境導致這種情況發生的是什麼?有些地方需要卸載?安裝?改變了嗎?
編輯包括project.json:
{
"version": "1.0.0-*",
"description": "Model Class Library",
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"net451": { }
},
"dependencies": {
"EntityFramework.Core": "7.0.0-rc1-final",
"System.ComponentModel.Annotations": "4.0.11-beta-23516"
}
}
我曾使用過'1.0.0-rc1-update1'而不是'1.0.0-rc1-final'。它「工作」在於它重建了鎖文件,但最終結果與Visual Studio自己完成的一樣。我認爲這個項目是在* ASP.NET 5之前創建的,然後升級了....所以這就是爲什麼它似乎希望鎖定文件中的舊引用。 – FirstDivision
@FirstDivision瞭解。在這種情況下,也許你應該分享你的project.json。 – danludwig
我爲其中一個項目添加了項目json。這是一個非常簡單的只包含項目其餘部分的共享模型類。 – FirstDivision