2016-10-15 6 views
2

Ich habe eine .NET-Kernklassenbibliothek, die ein nuget-Paket zum netstandard1.6 erstellt. Ich möchte diese Bibliothek in einer Azure-Funktion verwenden. Aber ich bin immer diese Fehlermeldung, wenn ich versuche, eine Methode in der Klassenbibliothek rufen mit demNetstandard Kann nicht von nuget System.Net.Http zu GAC Version konvertieren

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]'

ich, dass D gues: \ home \ data \ Funktionen \ packages \ nuget \ System .Net.Http \ 4.1.0 \ ref \ net46 \ System.Net.Http.dll ist die DLL kommende Form "Abhängigkeiten": { "NETStandard.Library": "1.6.0" },

Ich habe ähnliche Probleme mit System.Net.Http gefunden: https://github.com/dotnet/corefx/issues/9846 Und ich las etwas über:

Beispiele für Pakete, die nicht auf 1,0 "System.Net.Http" festgelegt sind: "4.1.0- *" https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/managing-package-dependency-versions

Sollte ich Herabstufung 1.2, weil die System.Net netstandard. Http-Version? Aber das kann ich net46 nicht mehr unterstützen: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

Gibt es eine Diskrepanz zwischen netstandard und net46?

Antwort

1

Ja, ich habe es funktioniert :) Das, was ich tat:

Ich habe net46 als Rahmen und bewegt „NETStandard.Library“: „1.6.0“ nur als Abhängigkeiten für netstandard1.3. Wegen der System.Net.Http-Bibliothek, die sich in der "NETStandard.Library" befindet.

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

Add hinzugefügt "type": "bauen" in meinen abhing Referenzprojekten.

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

Wäre schön, wenn jemand ein vollständiges Tutorial mit Best Practices zum Einrichten moderner Klassenbibliotheken geschrieben hätte.

1

Nach Azure-Funktion documentation scheint es, dass das einzige unterstützte Framework im Moment net46 ist.

+0

net46 ist eine unterstützte Plattform vom netstandard. Ich erniedrige den Netstandard auf 1.3, aber immer noch den gleichen Fehler. – Thieme

1

Derzeit unterstützen wir offiziell bis zu Netstandard 1.3. Die project.json Datei sollte weiterhin net46 verwenden, da das Framework und kompatible Pakete ordnungsgemäß gelöst werden (wie ich glaube, dass Sie gefunden haben). Diese Frage bezieht sich mehr auf den .NET-Standard als auf Azure-Funktionen. Daher wäre dies eine gute Informationsquelle: https://docs.microsoft.com/en-us/dotnet/articles/standard/library

Hoffe, das hilft!

Verwandte Themen