kpm restore无法找到System.Net.Http

时间:2015-02-18 11:53:28

标签: c# asp.net docker asp.net-core

使用Docker做一些工作,尝试创建一个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或类似的东西,我会以正确的方式进行访问吗?

更新

好的我很确定它与我指向的NuGet源有关。我尝试更新kpm恢复以使用MyGet aspnetrelease feed。现有问题已修复,但现在我得到了:

Unable to locate Newtonsoft.Json >= 6.0.6

Aaaaaaaaaaaaargh

将我的Dockerfile RUN命令更改为:

RUN ["kpm", "restore", "-s", "https://www.myget.org/F/aspnetrelease/api/v2"]

2 个答案:

答案 0 :(得分:1)

与使用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,因此案例对文件路径和文件名很重要。

答案 1 :(得分:0)

成功!

将Dockerfile RUN命令更新为:

RUN ["kpm", "restore", "-s", "https://www.myget.org/F/aspnetrelease/api/v2", "-f", "https://nuget.org/api/v2"]

这将默认设置为aspnetrelease MyGet feed,并回退到NuGet。

需要注意的一点是:更新此命令并在同一个Docker主机上运行不起作用,并返回一个非常奇怪的Linux错误。我删除并重新创建了Docker主机,再次构建了我的镜像,最终终于工作了。

希望将来能帮助别人。