使用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"]
答案 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主机,再次构建了我的镜像,最终终于工作了。
希望将来能帮助别人。