kpm恢复无法findSystem.Net.Http
做一些与Docker的工作,尝试创build一个ASP.NET 5容器,但是当它恢复包时,kpm返回OK,除了:
Unable to locate System.Net.Http
我也尝试与Microsoft.Net.Http.Client交换,但得到了类似的回应。
这是我的project.json文件:
{ "webroot": "wwwroot", "version": "1.0.0-*", "exclude": [ "wwwroot" ], "packExclude": [ "**.kproj", "**.user", "**.vspscc" ], "dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0.0-beta2-10877", "Microsoft.AspNet.Diagnostics": "1.0.0.0-beta2-11936", "Microsoft.AspNet.Mvc": "6.0.0.0-beta2-12332", "Microsoft.Framework.ConfigurationModel.Json": "1.0.0.0-beta1-10525", "System.Net.Http": "4.0.0.0" }, "frameworks": { "aspnetcore50": { "dependencies": { } } } }
这是我的Dockerfile:
FROM microsoft/aspnet COPY /app/approot/src/Docker.Web /app WORKDIR /app RUN ["kpm", "restore"] EXPOSE 5004 ENTRYPOINT ["k", "kestrel"]
我只需要访问一个WebClient或类似的,我是否正确的方式?
UPDATE
好吧,我很确定这与我指向的NuGet源有关。 我尝试更新Kpm恢复使用MyGet的aspnetrelease饲料代替。 现有的问题是固定的,但现在我得到:
Unable to locate Newtonsoft.Json >= 6.0.6
Aaaaaaaaaaaaargh
将我的Dockerfile运行命令更改为:
RUN ["kpm", "restore", "-s", "https://www.myget.org/F/aspnetrelease/api/v2"]
与更新kpm相关的东西,我不得不添加这个文件(NuGet.Config):
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2/" /> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> </packageSources> <disabledPackageSources /> <activePackageSource> <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> </activePackageSource> </configuration>
到/root/.config/NuGet/NuGet.Config
。 既然是Linux,大小写文件path和文件名就很重要。
成功!
更新Dockerfile运行命令到:
RUN ["kpm", "restore", "-s", "https://www.myget.org/F/aspnetrelease/api/v2", "-f", "https://nuget.org/api/v2"]
这将默认设置为aspnetrelease MyGet供稿,回退到NuGet。
有一件事要注意:更新这个命令并运行在同一个Docker主机上不起作用,并返回了一个非常奇怪的Linux错误。 我删除并重新创build了Docker主机,重新构build了我的映像,并最终运行。
希望这将有助于别人。