কনফিগারেশনবিল্ডার ব্যবহার করে বেস পাথ সেট করা হচ্ছে


91

আমি তৈরি করছি এমন একটি নেট নেট অ্যাপ্লিকেশনটির জন্য অ্যাপ্লিকেশন বেসের পথটি সেট করার চেষ্টা করছি। আমি কনফিগারেশন বিল্ডারে ত্রুটি পেতে থাকি। এটি আমি পেয়েছি ত্রুটি।

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()। আমি কি কিছু ভুল করবেন? আমি কি আমার প্রজেক্ট.জসনের সাথে সঠিক নির্ভরতা যুক্ত করিনি? আমি আমার স্টার্টআপ.সি এবং আমার প্রজেক্ট.জসনকে ঘিরে রেখেছি।

প্রকল্প.জসন

{
"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 startupstartup.cs এর ঠিক উপরে অবস্থিত ফাংশনে রয়েছে।

উত্তর:


177

আমি সমস্যাটি সমাধান করতে সক্ষম হয়েছি। আপনি যদি এখনও এটি সমাধান না করে থাকেন তবে এই প্রকল্পটিতে চেষ্টা করুন jজসন। নিম্নলিখিত যুক্ত করুন:

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

এবং এটি কাজ করা উচিত


এখন থেকে কোন প্রকল্প.জসন ফাইল নেই বলে ইএফ কোর 2.0 তে এটি কীভাবে করবেন?
21

4
@ অ্যাথার: আপনি যে কোনও ন্যুয়েট যুক্ত করেছেন ঠিক একইভাবে দুটি ন্যুগেট যুক্ত করুন।
দেজন

4
@ATHER dotnet add package <packageName>যেখানে এই ক্ষেত্রে Microsoft.Extensions.Configuration.FileExtensionsপ্যাকেজ নাম , বা ভিজ্যুয়াল স্টুডিওতে নুগেট প্যাকেজ যুক্ত করুন
উইলিয়াম

53

এখনও কেউ এই সমস্যা নিয়ে চলেছে কিনা তা নিশ্চিত নই তবে আমি এটি ডটনেটকোর কনসোল প্রকল্পে (নেটকোরপ্প ২.০) এর মাধ্যমে সমাধান করতে সক্ষম হয়েছি:

dotnet add package Microsoft.Extensions.Configuration.Json

4
ধন্যবাদ @ বিশপ। আমার। নেট কোর লাইব্রেরিতে এটি যুক্ত করা আমার সমস্যার সমাধান করেছে।
ওয়ালেস বি ম্যাকক্লিউর

হ্যাঁ, .Jsonনুগেটের মাধ্যমে ইনস্টল করাও কাজ করে।
জেমস হিরসকর্ন

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>

মাইক্রোসফ্ট.এক্সটেনশনগুলি on কনফিগারেশন.ফাইএল এক্সটেনশনস এবং মাইক্রোসফ্ট x এক্সটেনশনস on কনফিগারেশন.জসন হ'ল প্যাকেজগুলি যা অনুপস্থিত।
অগ্নিয়ান দিমিত্রভ

3

যদি আপনি একটি নেট নেট 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

... যেখানে মাইপ্রজেক্ট.csproj ফাইলটির নাম ।


3

আরও একটি সম্ভাব্য সমস্যা নিয়ে কেবল পাইলিং করা ...

আমাকে এটি যুক্ত করতে হয়েছিল:

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

এই সংকলনের জন্য যাতে:

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

সম্পাদনা: আমি বেশ কয়েক মাস আগে এই উত্তরটি লিখেছি, তবে আমি নিশ্চিত যে এটি কোনও কনসোল অ্যাপ্লিকেশনটির জন্য।


4
মোহন মত কাজ!
ড্যানিয়েল কোহেন

2

আপনার প্রকল্পে নিম্নলিখিত যুক্ত করুন। জসন:

"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-*",

পরামর্শের জন্য ধন্যবাদ! আমি উভয় প্রজেক্ট.জসনে যুক্ত করার চেষ্টা করেছি এবং তারপরে একটি "ডিএনও পুনরুদ্ধার" করেছি। তবে আমি এখনও আমার স্টার্টআপ.সি তে একই ত্রুটি পাচ্ছি। অন্য কোন ধারণা? আমি সঠিক ফাংশন আমি ব্যবহার করছি ডকুমেন্টেশন পাওয়া এখানেSetBasePath()
কারিম্যানসগ্যাগ

0

অতিরিক্ত বৈশিষ্ট্য উইন্ডো থেকে জসন ফাইলের "সর্বদা অনুলিপি করুন" এ "আউটপুট ডিরেক্টরিতে অনুলিপি" সম্পত্তি সেট করতে ভুলবেন না।


0

আর কিছু বিবেচনা করুন:

using Microsoft.Extensions.Configuration;

এই "ব্যবহার" বিবৃতি ব্যতীত, এটি মাইক্রোসফ্টে এক্সটেনশন পদ্ধতিটি খুঁজে পায় না x

আমার জন্য ঝামেলা ছড়িয়ে গেল কারণ আমরাও ছিলাম:

using System.Configuration;

এবং "কনফিগারেশনবিল্ডার" এর সাথে একটি নাম সংঘর্ষ হয়েছে। যুক্ত করুন

using Microsoft.Extensions.Configuration;

লাইন ... অপসারণ

using System.Configuration;

লাইন, তারপরে System.Configration- এর অধীনে যেকোন কিছুকে পুরোপুরি যোগ্যতা অর্জন করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.