2016-06-16 68 views
2

我有一個項目反過來引用官方nuget'd庫(forecast.io)的一個分支。我已經安排了我的global.json來查找我的lib的副本,但dotnet restore似乎仍然接觸到官方版本,而不是我的分支。.NET Core RC2:使用包的本地叉

我形成這樣的結論,因爲我得到的錯誤:

Package Forecast.io 1.0.0 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Forecast.io 1.0.0 supports: net45 (.NETFramework,Version=v4.5) 
One or more packages are incompatible with .NETCoreApp,Version=v1.0. 

然而,我forecast.io的叉甚至不針對.NET 4.5 - 只有「net40」和「netcoreapp1.0」。

如何確保我的本地叉被使用?

這裏是我的global.json

{ 
    "projects": [ 
    "../../ext/forecast.io-csharp/src/Forecast.io", 
    "MyOtherLibRefWhichWorks", 
    "MyPrimaryProject" 
    ] 
} 

而且從project.json從小學項目的一個片段:

"dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0-rc2-3002702" 
    }, 
    "MyOtherLibRefWhichWorks": "1.0.0-*", 
    "Forecast.io": "1.0.0-*", 

編輯:好像global.json那張完全忽略。它位於project.json所在的上方的一個目錄中。

+0

您是否試過''Forecast.io「:{」target「:」project「}'? – svick

+0

這樣做會導致'無法解析'Forecast.io''(我將更改應用到project.json) - 似乎是一個可能的前進步驟,假設global.json以某種方式被忽略 – Malachi

+0

將當前項目添加到全局時會發生什麼.json呢? – svick

回答

1

創建您自己的本地或遠程Nuget訂閱源將是一種更可靠的解決方案。我自己這樣做是爲了管理我發佈的軟件包的測試版本,它運行得非常好。

要做到這一點,你只需要一個空文件夾和Nuget CLI。如果您的文件夾是C:\Nuget,請運行

nuget add package.nupkg -source C:\Nuget 

將分叉包添加到本地供稿。爲了確保沒有任何混淆,請使用與官方軟件包不同的名稱或版本號來構建分叉的軟件包。

然後,配置的NuGet使用您當地的飼料作爲源:

nuget sources Add -Name LocalNuget -Source C:\Nuget 

一旦設置完畢,更新您的project.json引用您的分叉包,然後再次運行dotnet restore拉下本地副本。

如果您需要在多臺機器或團隊環境中恢復軟件包,您可以設置自己的NuGet服務器或使用MyGet.org託管您的軟件包。

+0

這很好,幾乎完全符合規定(nuget add對我而言不存在,所以我只是手動複製了nupkg)。然而,我關心的是a)project.json中不可避免的版本名稱流失和b)所需的每臺計算機設置 - 儘管不是很大 – Malachi

+0

您可以從上面的鏈接下載'nuget.exe'並將其放置在您的如果您想使用CLI,請使用PATH。你是對的,除非你把軟件包放在共享的網絡位置,否則這對團隊來說效果不佳。在這種情況下更好的解決方案將是MyGet! –

+0

@Malachi你是什麼意思的「不可避免的版本名稱流失」? –

相關問題