Netstandard无法从nuget System.Net.Http转换为GAC版本

时间:2016-10-15 13:46:53

标签: c# azure-functions dotnet-httpclient .net-standard

我有一个.NET核心类库,它为netstandard1.6构建一个nuget包。我想在Azure函数中使用此库。但是当我尝试用

调用类库中的方法时,我收到了这个错误
using System.Net.Http;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{
   return MyClassLib.Methode(req);
}

error CS1503: Argument 1: cannot convert from 'System.Net.Http.HttpRequestMessage [D:\home\data\Functions\packages\nuget\System.Net.Http\4.1.0\ref\net46\System.Net.Http.dll]' to 'System.Net.Http.HttpRequestMessage [D:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll]'

我猜D:\ home \ data \ Functions \ packages \ nuget \ System.Net.Http \ 4.1.0 \ ref \ net46 \ System.Net.Http.dll是来自&#34;依赖&#34;:{     &#34; NETStandard.Library&#34;:&#34; 1.6.0&#34;   },

我在System.Net.Http中发现了类似的问题:https://github.com/dotnet/corefx/issues/9846 我读了一些关于:

的内容
  

未修复为1.0的软件包示例   &#34; System.Net.Http&#34;:&#34; 4.1.0 - *&#34;   https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/managing-package-dependency-versions

我应该降级到netstandard 1.2,因为System.Net.Http版本?但是我不能再支持net46了:https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

netstandard和net46之间是否存在不匹配?

3 个答案:

答案 0 :(得分:1)

根据Azure Function的documentation,目前唯一受支持的框架似乎是net46

答案 1 :(得分:1)

是的,我有工作:)这就是我做的:

我添加了net46作为框架并移动了#34; NETStandard.Library&#34;:&#34; 1.6.0&#34;仅作为netstandard1.3的依赖项。因为System.Net.Http库位于&#34; NETStandard.Library&#34;。

MyClassLib:

"frameworks": {
"netstandard1.3": {
  "imports": [ "netcoreapp1.0" ],
  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "System.Xml.XmlSerializer": "4.0.11",
    "System.Xml.XmlDocument": "4.0.1",
    "System.Xml.XDocument": "4.0.11"
  }
},
"net46": {
  "frameworkAssemblies": {
    "System.Xml": "",
    "System.Xml.Linq": "",
    "System.Xml.Serialization": ""
  }
}

添加已添加&#34;键入&#34;:&#34;构建&#34;在我所依赖的参考项目中。

"MyClassLib.Xml": {
  "target": "project",
  "type": "build"
},

如果有人写了一篇关于设置现代类库的最佳实践的完整教程,那会很好。

答案 2 :(得分:1)

目前,我们正式支持最高 Netstandard 1.3。 project.json文件应继续使用net46作为框架,并且将正确解析兼容包(我相信您已找到)。这个问题与.NET标准比Azure函数更相关,因此这将是一个很好的信息来源:https://docs.microsoft.com/en-us/dotnet/articles/standard/library

希望这有帮助!