2016-11-21 5 views
0

Heute (11.11.2016) habe ich das neue Visual Studio 2017 RC heruntergeladen, .Net Core 1.1 installiert und ein Web-API-Projekt eingerichtet (ASP.NET Core Web Application (.NET Core)). Ich folgte dann den Anweisungen auf how to read app settings from a config file. Das hat gut funktioniert.Wie lese ich .Net Core-Konfiguration in einer Standard-Klassenbibliothek?

Dann habe ich ein neues Projekt in der gleichen Lösung erstellt. Dies war eine Klassenbibliothek (.NET Standard) unter der .NET Core Abschnitt. Ich habe eine Klasse mit einer Schnittstelle hinzugefügt und sie mit der Standardabhängigkeitsinjektion eingerichtet.

Schließlich, habe ich versucht, die Konfiguration in der Klassenbibliothek durch Konstruktorinjektion zu verwenden. Ich bekomme diese Fehlermeldung:

Der Typ oder Namespace-Name 'ioptions <>' nicht

Hier finden könnte, ist meine Klasse in der Klassenbibliothek:

public class Firebase : IDatabase 
{ 
    public Firebase(IOptions<AppSettings> appSettings) 
    { 
     //string basePath = 
    } 
} 

Hier die ConfigureServices Methode in Startup.cs:

public void ConfigureServices(IServiceCollection services) 
    { 
     // Add framework services. 
     services.AddMvc(); 
     services.AddTransient<IDatabase, Firebase>(); 

     // Set up configuration files. 
     services.AddOptions(); 
     services.Configure<AppSettings>(options => Configuration.GetSection("AppSettings").Bind(options)); 
    } 

ich habe versucht, hinzufügen

um es zu kompilieren, aber die Glühbirne sagt mir, dass dies eine unnötige Referenz ist.

Was fehlt mir? Ist das nicht möglich? Gibt es eine spezielle Klassenbibliothek für .NET Core?

Antwort

2

Arbeiten mit IOptions{T} ist der richtige Weg in .NET Core. Visual Studio 2017 weist darauf hin, dass unnötige Nutzungen vorliegen. Dies ist ein wenig verwirrend, da Visual Studio dies anzeigt, wenn der Zeiger auf der Verwendung ist. Mit Blick auf den Vorschlag, den Visual Studio macht, entfernt er nicht die , sondern andere Anwendungen für e.q. `System.

+0

Danke für Ihre Antwort! Es hat mich nach möglicherweise fehlenden Referenzen suchen lassen. Es stellte sich heraus, dass ich auf * Microsoft.Extensions.Configuration (1.1.0) *, aber nicht * Microsoft.Extensions.Options.ConfigurationExtensions (1.1.0) * verwiesen hatte. Nach einem weiteren Neustart von VS 2017 klappte das endlich! – Halvard

Verwandte Themen