用 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 restore 以改为使用 MyGet aspnetrelease 提要。现有问题已解决,但现在我得到:
Unable to locate Newtonsoft.Json >= 6.0.6
啊啊啊啊啊啊啊
将我的 Dockerfile RUN 命令更改为:
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,因此文件路径和文件名的大小写很重要。
关于c# - kpm 恢复无法找到 System.Net.Http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583004/