विन्यास पथ का उपयोग करके बेस पथ सेट करना


90

मैं एक। नेट वेब ऐप के निर्माण के लिए एप्लिकेशन बेस पथ सेट करने का प्रयास कर रहा हूं। मुझे कॉन्फ़िगरेशन बिल्डर पर त्रुटियाँ मिलती रहती हैं। यह मुझे मिलने वाली त्रुटि है।

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?)

मैं मान रहा हूँ कि मुझे अपने .AddJsonFile()और के लिए एक ही त्रुटि मिलेगी .AddEnvironmentVariables()। क्या मैंने कुछ गलत किया? क्या मैंने अपनी परियोजना के लिए सही निर्भरता नहीं जोड़ी थी। मैंने अपने स्टार्टअप.कैंसेस और अपने प्रोजेक्ट.जॉन को संलग्न किया है।

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);
  }
}

त्रुटि public startupस्टार्टअप के शीर्ष के पास फंक्शन में है ।

जवाबों:


176

मैं इस मुद्दे को हल करने में सक्षम था। यदि आपने अभी तक इसे हल नहीं किया है, तो प्रोजेक्ट में निम्न प्रयास करें। निम्नलिखित जोड़ें:

"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-*",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final"

और यह काम करना चाहिए


EF Core 2.0 में यह कैसे किया जाता है क्योंकि अब कोई प्रोजेक्ट नहीं है। Json फ़ाइल?
ATHER

3
@ पिता: आप जिस तरह से किसी भी अन्य नगेट्स को जोड़ते हैं, ठीक उसी तरह दो नगेट्स जोड़ें।
देजन

5
@ATHER dotnet add package <packageName>जहां इस मामले में PackageName है Microsoft.Extensions.Configuration.FileExtensions, या दृश्य स्टूडियो में nuget पैकेज जोड़ने
विलियम आर्डिला

51

यकीन नहीं होता है कि कोई भी अभी भी इस मुद्दे पर चलता है, लेकिन मैं इसे एक डॉटनेटकोर कंसोल प्रोजेक्ट (netcoreapp2.com) में संबोधित करने में सक्षम था:

dotnet add package Microsoft.Extensions.Configuration.Json

1
धन्यवाद @ बिशप मेरे .net कोर लाइब्रेरी में जोड़ने से मेरी समस्या हल हो गई।
वालेस बी। मैकक्लेर

हाँ, .JsonNuGet के माध्यम से स्थापित करना भी काम करता है।
जेम्स हिर्शोर्न

6

अपनी .csprojफ़ाइल में निम्नलिखित जोड़ने का प्रयास करें :

<ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
</ItemGroup>

Microsoft.Extensions.Configuration.FileExtensions और Microsoft.Extensions.Configuration.Json बिल्कुल ऐसे पैकेज हैं जो गायब हैं।
ओग्यान दिमित्रोव

3

यदि आप .NET कोर 1.x या .NET मानक 1.x चला रहे हैं, तो आपको यह कमांड चलाना चाहिए:

dotnet add package Microsoft.Extensions.Configuration.Json -v 1.1.1

यदि आपका प्रोजेक्ट किसी अन्य फ़ोल्डर के अंदर है:

dotnet add .\src\MyProject package Microsoft.Extensions.Configuration.Json -v 1.1.1

... जहाँ MyProject.csproj फ़ाइल का नाम है ।


3

बस एक और संभव मुद्दे के साथ जमा ...

मुझे इसे जोड़ना था:

<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0" />

इसके संकलन के लिए:

var builder = new ConfigurationBuilder()
  .SetBasePath(Directory.GetCurrentDirectory())
  ...

संपादित करें: मैंने यह उत्तर कई महीने पहले लिखा था, लेकिन मुझे पूरा यकीन है कि यह एक कंसोल ऐप के लिए था।


1
एक जादू की तरह काम किया!
डैनियल कोहेन

2

अपने प्रोजेक्ट में निम्नलिखित जोड़ें। json:

"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-*"

2

अपने प्रोजेक्ट में निम्नलिखित को जोड़ने का प्रयास करें। निर्भरताएँ: "Microsoft.Extensions.Configuration.CommandLine": "1.1.1",

या प्रोजेक्ट में।
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.1.1" />

इसने मेरे लिए काम किया।


1

अपने प्रोजेक्ट में निम्नलिखित को जोड़ने का प्रयास करें। निर्भरताएँ:

"Microsoft.Extensions.Configuration": "1.0.0-*",
"Microsoft.Extensions.Configuration.Abstractions": "1.0.0-*",

सलाह के लिये धन्यवाद! मैंने दोनों प्रोजेक्ट को जोड़ने की कोशिश की। Json और फिर एक "dnu restore" किया। लेकिन मुझे अपने स्टार्टअप में अभी भी वही त्रुटि मिल रही है। कोई अन्य विचार? मुझे उस सटीक फ़ंक्शन के लिए दस्तावेज़ मिला, जिसका मैं यहां उपयोग कर रहा हूं । SetBasePath()
करीमनमस्वाग

0

इसके अलावा, गुण विंडो से "कॉपी टू आउटपुट आउटपुट" संपत्ति को हमेशा "कॉपी" करें।


0

कुछ और विचार करने के लिए:

using Microsoft.Extensions.Configuration;

उस "उपयोग" कथन के बिना, यह Microsoft में एक्सटेंशन विधि नहीं ढूँढता है।

मेरे लिए मुसीबत खड़ी हो गई क्योंकि हम भी थे:

using System.Configuration;

और "कॉन्फ़िगरेशनबुलस्ट" के साथ एक नाम टकराव था। जोड़ें

using Microsoft.Extensions.Configuration;

लाइन ... हटाओ

using System.Configuration;

लाइन, तो पूरी तरह से System.Configuration के तहत कुछ भी योग्य है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.