.NET Core RC2:使用包的本地分支

.NET Core RC2: use local fork of a package

我有一个项目,该项目又引用了官方 nuget 库 (forecast.io) 的一个分支。我已经安排我的 global.json 找到我的 lib 副本,但 dotnet restore 似乎仍然接触到官方版本而不是我的叉子。

我得出这个结论是因为我得到了错误:

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 所在目录的上方一个目录..

创建您自己的本地或远程 Nuget 提要将是针对这种情况的更可靠的解决方案。我自己这样做是为了管理我发布的软件包的 beta 版本,而且效果非常好。

要在本地执行,您只需要一个空文件夹和 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 来托管您的包。