我有一个项目,该项目又引用了官方 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
将您的 fork 包添加到本地提要。为确保没有任何混淆,请使用与官方包不同的名称或版本号构建您的 fork 包。
然后,配置 Nuget 以使用您的本地提要作为源:
nuget sources Add -Name LocalNuget -Source C:\Nuget
完成所有设置后,更新您的 project.json
以引用您的 fork 包并再次运行 dotnet restore
以下载本地副本。
如果您需要在多台机器上或在团队环境中恢复包,您可以设置自己的 NuGet 服务器或使用 MyGet.org托管您的包裹。
关于.NET 核心 RC2 : use local fork of a package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870257/