2

我有一个项目,它又引用了官方 nuget'd 库(forecast.io)的一个分支。我已经安排了我的 global.json 来找到我的 lib 副本,但dotnet restore似乎仍然可以访问官方版本而不是我的 fork。

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

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

4

1 回答 1

1

对于这种情况,创建自己的本地或远程 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来托管您的包。

于 2016-06-18T04:12:39.200 回答