2017-09-11 5 views
4

Im Moment portiere ich eine ASP Web API auf .Net Core.Verwenden von Microsoft.AspNetCore.All-Paket in NetStandard

Die API verwendet eine Klassenbibliothek, die einige Implementierungen der ActionFilterAttribute-Klasse bereitstellt.

Also muss ich diese Klassenbibliothek auch portieren. Als ich versuchte, den nuget Paket Microsoft.AspNetCore.All zu der Klassenbibliothek hinzufügen recived ich diesen Fehler:

Package Microsoft.AspNetCore.All 2.0.0 is not compatible with netstandard2.0

Als ich den Zielrahmen netcoreapp2.0 ändern, ich bin in der Lage, das Paket zu installieren, aber ich brauche natürlich einen Einstiegspunkt für diesen Zieltyp.

Wie kann ich eine netcore Klassenbibliothek erstellen, die die Microsoft.AspNetCore.All Paket

Grüße

Antwort

4

Sie können nicht (gut technisch konnte man über NuGet Fallback verwenden können, aber Sie sollten nicht als es kann Ihre Portabilität beeinträchtigen) und Sie sollten nicht.

Das .All-Paket ist ein Convenience-Meta-Paket, so dass Sie nicht auf ein Dutzend oder andere Assemblies für selbst das einfachste ASP.NET Core Project verweisen müssen.

Es zielt auf .NET Core aus einem Grund, so dass Sie es nicht in .NET Standard verwenden können.

Wenn Sie Ihre Anwendung veröffentlichen, werden die nicht verwendeten Pakete entfernt. Wenn Sie eine Klassenbibliothek erstellen, möchten Sie nicht nur von den Paketen abhängig sein, die von Ihrem Projekt benötigt werden.

2

Das Metapaket Microsoft.AspNetCore.All ist nur für .NETCoreApp verfügbar. Dies ist by design, da es explizit als Convenience-Paket für Webanwendungen auf .NET Core ausgerichtet ist. Um seine Magie zum Veröffentlichungszeitpunkt zu nutzen (Entfernen nicht verwendeter Abhängigkeiten), benötigt es den .NET Core-Laufzeitspeicher, der nur für .NET Core selbst verfügbar ist.

Alle anderen Projekte, einschließlich Bibliotheksprojekten, die auf .NET Standard ausgeführt werden, aber auch alle Projekte, die auf dem vollständigen .NET Framework ausgeführt werden, sollten stattdessen individuelle Paketverweise verwenden.

Also anstelle der Referenzierung Microsoft.AspNetCore.All, würden Sie z. Microsoft.AspNetCore oder Microsoft.AspNetCore.Mvc erhalten Sie Ihre ActionFilterAttribute.

Verwandte Themen