Ich versuche, den Basispfad der Anwendung für eine von mir erstellte .NET-Webanwendung festzulegen. Ich bekomme immer wieder Fehler im Configuration Builder. Dies ist der Fehler, den ich bekomme.
DNX,Version=v4.5.1 error CS1061: 'ConfigurationBuilder' does not contain a definition for 'SetBasePath' and no extension method 'SetBasePath' accepting a first argument of type 'ConfigurationBuilder' could be found (are you missing a using directive or an assembly reference?)
Ich gehe davon aus, dass ich den gleichen Fehler für mein .AddJsonFile()
und bekomme .AddEnvironmentVariables()
. Habe ich etwas falsch gemacht? Habe ich meiner project.json nicht die richtige Abhängigkeit hinzugefügt? Ich habe meine startup.cs und meine project.json beigefügt.
project.json
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"tooling": {
"defaultNamespace": "TripPlanner"
},
"dependencies": {
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.Framework.Configuration": "1.0.0-beta8",
"Microsoft.Framework.DependencyInjection": "1.0.0-beta8"
//"Microsoft.Extensions.PlatformAbstractions": "1.0.0-beta8"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
using TripPlanner.Services;
namespace TripPlanner
{
public class Startup
{
public static IConfigurationRoot Configuration;
public Startup(IApplicationEnvironment appEnv){
var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services)
{
services.AddMvc();
#if DEBUG
services.AddScoped<IMailService, DebugMailService> ();
#else
services.AddScoped<IMailService, RealMailService> ();
#endif
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
//app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc(config =>
{
config.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "App", action = "Index"}
);
});
}
// Entry point for the application.
public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
}
}
Der Fehler liegt in der public startup
Funktion ganz oben in startup.cs.
quelle
dotnet add package <packageName>
wo packageName in diesem Fall istMicrosoft.Extensions.Configuration.FileExtensions
, oder in Visual Studio Nuget-Paket hinzufügenIch bin mir nicht sicher, ob noch jemand auf dieses Problem stößt, aber ich konnte dies in einem Dotnetcore-Konsolenprojekt (netcoreapp2.0) beheben über:
quelle
.Json
über NuGet funktioniert auch.Fügen Sie Ihrer
.csproj
Datei Folgendes hinzu :quelle
Wenn Sie .NET Core 1.x oder .NET Standard 1.x ausführen, sollten Sie diesen Befehl ausführen:
Wenn sich Ihr Projekt in einem anderen Ordner befindet:
... wobei MyProject der Name der
.csproj
Datei ist.quelle
Fügen Sie Ihrem project.json Folgendes hinzu:
quelle
Fügen Sie Ihren project.json-Abhängigkeiten Folgendes hinzu:
"Microsoft.Extensions.Configuration.CommandLine": "1.1.1",
Oder in project.csproj:
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.1.1" />
Das hat bei mir funktioniert.
quelle
Nur noch ein mögliches Problem ...
Ich musste Folgendes hinzufügen:
damit dies kompiliert werden kann:
Bearbeiten: Ich habe diese Antwort vor einigen Monaten geschrieben, bin mir aber ziemlich sicher, dass es sich um eine Konsolen-App handelt.
quelle
Fügen Sie Ihren project.json-Abhängigkeiten Folgendes hinzu:
quelle
SetBasePath()
Vergessen Sie außerdem nicht, die Eigenschaft "In Ausgabeverzeichnis kopieren" im Eigenschaftenfenster auf "Immer kopieren" der Json-Datei zu setzen.
quelle
Noch etwas zu beachten:
Ohne diese Anweisung "using" wird die Erweiterungsmethode in Microsoft.Extensions.Configuration.FileExtensions nicht gefunden.
Das Problem trat für mich auf, weil wir auch:
Und es gab einen Namenskonflikt mit "ConfigurationBuilder". Ergänzen Sie die
Linie ... entfernen Sie die
Zeile, dann qualifizieren Sie alles unter System.Configuration.
quelle