2016-10-15 7 views
2

У меня есть библиотека классов .NET .NET, которая строит пакет nuget для netstandard1.6. Я хочу использовать эту библиотеку в функции Azure. Но я получаю эту ошибку, когда я пытаюсь вызвать метод внутри библиотеки классов сNetstandard Невозможно преобразовать из nuget System.Net.Http в версию GAC

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: \ главная \ Data \ функции \ пакеты \ NuGet \ System .Net.Http \ 4.1.0 \ исх \ net46 \ System.Net.Http.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

Должен ли я понизить до netstandard 1.2, потому что System.Net. Http-версия? Но я больше не могу поддерживать net46: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

Есть ли несоответствие между netstandard и net46?

ответ

1

Да, у меня он работает :) Это то, что я сделал:

Я добавил net46 в рамках и переехал «NETStandard.Library»: «1.6.0» только в качестве зависимостей для netstandard1.3. Потому что библиотека System.Net.Http находится внутри «NETStandard.Library».

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

Добавить добавил: "Тип": "строить" в моих зависело референций.

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

Было бы неплохо, если бы кто-нибудь написал полный учебник с передовыми методами создания современных библиотек классов.

1

Согласно функции Azure Function documentation, кажется, что единственной поддерживаемой структурой на данный момент является net46.

+0

net46 - поддерживаемая платформа по стандарту netstandard. Я понижаю рейтинг netstandard до 1.3, но все та же ошибка. – Thieme

1

В настоящее время мы официально поддерживаем до Netstandard 1.3. Файл project.json должен продолжать использовать net46, поскольку структура и совместимые пакеты будут правильно решены (как я считаю, вы нашли). Этот вопрос больше связан с стандартом .NET, чем с функциями Azure, поэтому это будет хороший источник информации: https://docs.microsoft.com/en-us/dotnet/articles/standard/library

Надеюсь, это поможет!