2016-10-02 29 views
0

我很想弄清楚如何強制npm(Nuget Package Manager)解析NetStandard1.X平臺的特定版本。如何在project.json中引用特定版本的NetStandard?

我想使用Serilog,但它支持的.NetStandard版本是v1.3。有沒有什麼辦法通過某些命令或開關或選項在project.json文件中強制執行此行爲。

 { 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Serilog": "2.2.1" 
    }, 

    "frameworks": { 
    "netstandard1.3": { 
     "imports": "dnxcore50", 
     "dependencies": { 
     } 
    } 
    } 
} 

當你指定V1.3,你最終V1.6。一定有辦法做到這一點?我正在嘗試升級使用log4net的舊.net framework 4.6類庫,並且我正在爲這裏的基礎努力工作。

錯誤轉儲:

Package Serilog 2.2.1 is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Serilog 2.2.1 supports: 
    - net45 (.NETFramework,Version=v4.5) 
    - net46 (.NETFramework,Version=v4.6) 
    - netstandard1.0 (.NETStandard,Version=v1.0) 
    - netstandard1.3 (.NETStandard,Version=v1.3) 
One or more packages are incompatible with .NETStandard,Version=v1.6. 

DOTNET的核心版本信息:

產品信息:

版本:1.0.0-preview2-003131

提交SHA-1哈希值:635cf40e58

+0

你可以用'nLog'而非' log4net',它有一個.Net核心的擴展包。 – Ignas

+0

你安裝了哪個版本的.Net Core?你的project.json在我的機器上恢復沒有問題。 – Ignas

+0

謝謝,但我認爲這是SDK版本。 我正在使用.Net Core 1.0.1。您可以在命令提示符下運行'dotnet'來獲取框架的版本。 – Ignas

回答

1

您的project.json在我的機器上恢復正常,所以我猜測package/versioning有問題。

請嘗試更改Serilog依賴版本:

"Serilog": "2.3.0-dev-00711" 

或者你我們的聊天過程中提出自己,移動雅觀到framework標籤:

"frameworks": { 
    "netstandard1.6": { 
     "imports": "dotnet5.6", 
     "dependencies": { 
      "Serilog": "2.3.0-dev-00711" 
     } 
    } 
} 
+0

不知道爲什麼我遇到這麼多的類型兼容性問題,但升級到一個新的包幫助。 =)。希望這對其他開發者來說不是問題,因爲它看起來像v1.6是向後兼容的。 – IbrarMumtaz

0

我不太確定我明白問題是什麼,或者問題到底是什麼。

但是有一件事情讓我想起了project.json,即使你的目標是netstandard1.3NETStandard.Library的版本應該是1.6.0。 (是的,這很讓人困惑。)

+0

是的,我明白了,這是非常混亂,但從Serilog包僅與netstandard 1.3.0兼容。編譯器會拋出一個關於此的錯誤,並且對於這個兼容性問題非常具體。 – IbrarMumtaz

+1

netstandard.library是一個nuget包(https://www.nuget.org/packages/NETStandard.Library/1.6.0),它包含一組模塊/ dll。該庫支持許多.net標準版本:1.0,1.1,1.2和1.3。 nuget版本與.net標準版本的版本號不匹配。 – Jaime

相關問題