2016-02-04 69 views
1

在一臺機器上,其中較舊的版本工作得很好,將新版本的同一項目從源代碼管理中拉出,運行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文件中。將工作項目與非工作項目進行比較顯示了這樣的結果。工作文件是在左邊:

comparison of 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

試試這個:

  • 刪除您project.lock.json文件。
  • 在命令提示符或PowerShell窗口中,運行dnvm use 1.0.0-rc1-final
  • 在同一PowerShell窗口中,導航到項目的根目錄並運行dnu restore

我懷疑工作project.lock.json文件是針對與1.0.0-rc1-update1不同的運行時版本構建。

+0

我曾使用過'1.0.0-rc1-update1'而不是'1.0.0-rc1-final'。它「工作」在於它重建了鎖文件,但最終結果與Visual Studio自己完成的一樣。我認爲這個項目是在* ASP.NET 5之前創建的,然後升級了....所以這就是爲什麼它似乎希望鎖定文件中的舊引用。 – FirstDivision

+0

@FirstDivision瞭解。在這種情況下,也許你應該分享你的project.json。 – danludwig

+0

我爲其中一個項目添加了項目json。這是一個非常簡單的只包含項目其餘部分的共享模型類。 – FirstDivision