【问题标题】:Netstandard Cannot convert from nuget System.Net.Http to GAC versionNetstandard 无法从 nuget System.Net.Http 转换为 GAC 版本
【发布时间】:2017-02-24 20:50:08
【问题描述】:

我有一个 .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 是来自“依赖项”的 dll: { “NETStandard.Library”:“1.6.0” },

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

未固定为 1.0 的软件包示例 "System.Net.Http":"4.1.0-*" https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/managing-package-dependency-versions

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

netstandard 和 net46 是否不匹配?

【问题讨论】:

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


    【解决方案1】:

    根据 Azure Function 的documentation 看来,目前唯一支持的框架是net46

    【讨论】:

    • net46 是 netstandard 支持的平台。我将 netstandard 降级到 1.3,但仍然是同样的错误。
    【解决方案2】:

    是的,我已经成功了 :) 这就是我所做的:

    我将 net46 添加为框架,并将 "NETStandard.Library": "1.6.0" 仅作为 netstandard1.3 的依赖项移动。因为“NETStandard.Library”中的 System.Net.Http 库。

    我的类库:

    "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": ""
      }
    }
    

    在我依赖的参考项目中添加添加的“type”:“build”。

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

    如果有人写了一个完整的教程,其中包含设置现代类库的最佳实践,那就太好了。

    【讨论】:

      【解决方案3】:

      目前,我们正式支持最高 Netstandard 1.3。 project.json 文件应该继续使用net46 作为框架,兼容的包将被正确解析(我相信你已经找到了)。这是一个与 .NET Standard 相关的问题,而不是 Azure Functions,所以这将是一个很好的信息来源:https://docs.microsoft.com/en-us/dotnet/articles/standard/library

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多