'কনফিগারেশন ম্যানেজার' নামটি বর্তমান প্রসঙ্গে নেই


468

আমি connectionStringsকনফিগার ফাইল থেকে অ্যাক্সেস করার চেষ্টা করছি । কোডটি ASP.NET + C #। আমি System.Configurationরেফারেন্স যোগ করেছি এবং ব্যবহারের সাথে উল্লেখ করেছি। তবে তবুও এটি সমাবেশটি মানবে না।

আমি ভিএসটিএস ২০০৮ ব্যবহার করছি Any কোন ধারণা কারণ হতে পারে?

আর একটি অদ্ভুত বিষয় হ'ল সমাবেশের নাম "সিস্টেমে কনফিগারেশন" হিসাবে দেখানো হয়, এটি একটি নিম্নতর সি, যা অন্যান্য সিস্টেম অ্যাসেমব্লির জন্য কীভাবে নাম প্রদর্শিত হয় তা নয়।

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace Utility
{
    public class CommonVariables
    {
        public static String ConnectionString
        {
            get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
        }  
    }  
}

কনফিগ:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

1
আপনি কিছু কোড যুক্ত করতে পারেন? আপনি কী বলতে চাইছেন যে এটি সমাবেশটি গ্রহণ করবে না? আপনি একটি নির্দিষ্ট ত্রুটি বার্তা পাচ্ছেন?
জোশুয়া বেলডেন

উত্তর:


820

নামস্থানটি ব্যবহার করা কেবল এটির প্রয়োজনীয় নয় System.Configuration। আপনার দ্বারা সমাবেশের রেফারেন্স যুক্ত করতে হবেSystem.Configuration.dll

  1. তথ্যসূত্র / নির্ভরতা উপর ডান ক্লিক করুন
  2. রেফারেন্স যুক্ত করুন চয়ন করুন
  3. সন্ধান করুন এবং যুক্ত করুন System.Configuration

এটি নিশ্চিতভাবে কাজ করবে। এছাড়াও NameValueCollectionআপনার লিখতে হবে:

using System.Collections.Specialized;

1
+1 ধন্যবাদ কিরান। আপনি কি জানেন যে যখন অন্যান্য বেশিরভাগ অ্যাসেমব্লিকে কেবল 'ব্যবহার' বিবৃতিটি অন্তর্ভুক্ত করে ডাকা যায় তখন কেন এটি করতে হয়?
ধুস্ট

13
এটি আমার বোঝাপড়া: ভুল হতে পারে। আপনি যখন রেফারেন্স যুক্ত করবেন তখন dll কে কম্পাইল / বিল্ডের বিন ফোল্ডারে অনুলিপি করতে বলছেন। প্রজেক্টটি তৈরি হওয়ার সময় কিছু dll এর কোর হিসাবে দেখা যায়, যখন আপনি ফাইল-> নতুন প্রকল্পে যান তখন রেফারেন্সগুলি সেই সময়ে সেট আপ হয়। তাদের সকলকে একই প্রক্রিয়াটি পেরিয়ে যেতে হয় যে কিছু আপনার জন্য করা হয় এবং কিছু আপনাকে ম্যানুয়ালি করতে হয়। আপনি আপনার সিস্টেম dll এর রেফারেন্স মুছে ফেলে এবং আপনার সমস্ত কোড ব্যর্থ দেখে তা পরীক্ষা করে দেখতে পারেন। =)
কিয়ারান

7
ঠিক আছে. সুতরাং আমি আরও কিছু গবেষণা করে দেখেছি যে উপরেরটি বেশিরভাগ ক্ষেত্রেই সত্য। তবে কয়েকটি ফাইল চলমান অবস্থায় বিন ফোল্ডারে লেখার প্রয়োজন পড়বে না কারণ সেগুলি গ্লোবাল অ্যাসেম্বলি ক্যাশে (জিএসি), যেখানে বিন স্থানীয় সংসদীয় ক্যাশে রয়েছে। System.dll এর মত
কায়রান

4
'সিস্টেম. কনফিগারেশন' নেমস্পেসটি 'সিস্টেম' ডিএল-তে পাওয়া যাবে, এজন্যই যখন ইন্টেলিসেন্স 'সিস্টেম.সংস্কারকরণটি ব্যবহার করে' গ্রহণ করে তখন কিছু মাথা আঁচড়তে পারে; তবে সিস্টেমটি কনফিগারেশন.ডেল প্রকল্প দ্বারা রেফারেন্স না থাকলে কনফিগারেশন ম্যানেজারটি খুঁজে পাবেন না।
জায়েব্রো

99

আপনার প্রকল্পে, .NET ট্যাবে, রেফারেন্স যুক্ত করুন ... রাইট-ক্লিক করুন, System.Configurationউপাদানটির নামটি সন্ধান করুন এবং ঠিক আছে ক্লিক করুন।

using System.Configurationসংকলক / ইন্টেলিসেন্সকে আপনার যে কোনও ক্লাসের জন্য সেই নামস্থানে অনুসন্ধান করতে বলে। অন্যথায়, আপনাকে System.Configuration.ConfigurationManagerপ্রতিবার পুরো নামটি ব্যবহার করতে হবে । তবে আপনি যদি রেফারেন্সটি যুক্ত না করেন, সেই নামস্থান / শ্রেণি কোথাও খুঁজে পাওয়া যাবে না।

নোট করুন যে কোনও ডিএলএল এর যে কোনও নেমস্পেস System.Configuration.dllথাকতে পারে, সুতরাং ফাইলটি , তাত্ত্বিকভাবে নামটির স্থান থাকতে পারে Some.Random.Name। স্পষ্টতা / ধারাবাহিকতার জন্য তারা সাধারণত একই হয় তবে ব্যতিক্রমও রয়েছে।


40

ঠিক আছে .. এটি ভিএসটিএস পুনরায় চালু করার পরে কাজ করেছে। লিংক একই সমস্যা সমাধান সুপারিশ করেছে। ইচ্ছে করে আমি আগে এটা দেখতে পারতাম। :)


16
7 বছর পরে এবং এটি এখনও কত লজ্জাজনক উত্তর এটি প্রায়শই।
মনিকা সেলিও

4
আপনার নিজের উত্তরটিকে উত্তর হিসাবে চিহ্নিত করার মতো কিছুই নয়, যখন এটি সত্যই উত্তর নয়। খুব খারাপ মোডগুলি প্রকৃত সঠিক উত্তরের জন্য এটি সম্পাদনা করতে পারে না। ডুড পয়েন্টগুলির জন্য তার নিজের উত্তর চিহ্নিত করেছে ....
ggiaquin16

1
@ ggiaquin16 আপনি যদি নিজেকে মেনে নেন তবে আপনি পয়েন্টগুলি পাবেন না;)
জেএড

@ কালিওস বা আপনি যদি মূল প্রশ্নটি পড়ে থাকেন তবে আপনি দেখতে পাবেন যে প্রশ্নকর্তা ইতিমধ্যে প্রশ্নের প্রথম সংস্করণে প্রজেক্টে সমাবেশটি যুক্ত করেছিলেন। ভিএস-এর এই বিশেষ সমাবেশ এবং সংস্করণের জন্য আইডিই পুনরায় চালু করা দরকার ছিল বা ত্রুটিটি ঘটতে থাকবে। যে সমাধান ছিল। এখানে দুটি উচ্চ রেট দেওয়া উত্তর আসলে জিজ্ঞাসিত প্রশ্নের সাথে কখনও প্রাসঙ্গিক ছিল না, তবে আপনি কেন কোনও প্রশ্নের আগে এটি না পড়ে উত্তর দেবেন তা ভাবতে ভাববেন না wonder (কেবলমাত্র পয়েন্টগুলির জন্য কাজগুলি করার শিরাতে যা এই ক্ষেত্রে খুব কার্যকর বলে মনে হচ্ছে ...)
ebyrob

24

System.Configurationসমস্ত প্রকল্পের রেফারেন্স হিসাবে যুক্ত করা এটি সমাধান করবে।

  1. Project-> এ যানAdd Reference

  2. প্রদর্শিত বাক্সে, All assembliesবাম হাতের তালিকার তালিকা ট্যাবটি ক্লিক করুন ।

  3. কেন্দ্রীয় তালিকায় স্ক্রোল System.Configurationকরে বাক্সটি চেক করা আছে কিনা তা নিশ্চিত করুন।

  4. প্রয়োগ করতে ওকে ক্লিক করুন, এবং আপনি এখন ConfigurationManagerক্লাসে অ্যাক্সেস করতে সক্ষম হবেন ।


19

এই উত্তর যুক্ত করা, প্রস্তাবিত সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করে না।

  1. রেফারেন্স যুক্ত করতে রেফারেন্স ট্যাবে ডান ক্লিক করুন।
  2. এসেম্বলিস ট্যাবে ক্লিক করুন
  3. 'সিস্টেম. কনফিগারেশন' অনুসন্ধান করুন
  4. ঠিক আছে ক্লিক করুন।

9

যদি আপনি প্রচুর সতর্কতা পান (আমার ক্ষেত্রে একটি সমাধানে 64)!

CS0618: 'কনফিগারেশনসেটিংস.এপসেটেটিংস' অপ্রচলিত: 'এই পদ্ধতিটি অপ্রচলিত, এটি সিস্টেম.সংশ্লিষ্টকরণ দ্বারা প্রতিস্থাপন করা হয়েছে!

আপনি একটি পুরানো প্রকল্প আপগ্রেড করার কারণে আপনি নীচের হিসাবে অনেক সময় সাশ্রয় করতে পারেন:

  1. System.Configurationআপনার রেফারেন্স বিভাগে একটি রেফারেন্স হিসাবে যুক্ত করুন ।
  2. usingপ্রতিটি শ্রেণি ( .cs) ফাইলের শীর্ষে নিম্নলিখিত দুটি বিবৃতি যুক্ত করুন:

    using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;

এই পরিবর্তন দ্বারা সমস্ত ঘটনা

ConfigurationSettings.AppSettings["mySetting"]

এখন সঠিক কনফিগারেশন ম্যানেজারকে উল্লেখ করবে, অবহিত হওয়া আর নেই, এবং সমস্ত CS0618 সতর্কতা অবিলম্বে চলে যাবে।

অবশ্যই, মনে রাখবেন যে এটি একটি দ্রুত হ্যাক। দীর্ঘমেয়াদে, আপনার কোডটি রিফ্যাক্টরিংয়ের বিষয়টি বিবেচনা করা উচিত।


9

আমি ইস্যুটির জন্য আরও ভাল সমাধান পেয়েছি configurationmanager does not exist in the current context

পাঠ্য সংযোগের স্ট্রিংয়ের web.configজন্য আমাদের ConfigurationManagerক্লাস এবং এর পদ্ধতিটি ব্যবহার করা দরকার । আপনি যদি ব্যবহার করতে চান তবে আপনার ব্যবহার করে নেমস্পেস যুক্ত করতে হবে System.Configuration;

যদিও আপনি এই নেমস্পেসটি ব্যবহার করেছেন, আপনি যখন ConfigurationManagerক্লাসটি ব্যবহার করার চেষ্টা করছেন তখন সিস্টেমটি একটি ত্রুটি দেখায় "বর্তমান প্রসঙ্গে কনফিগারেশন ম্যানেজারের অস্তিত্ব নেই"। সমস্যাটি সমাধান করতে:

ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString; 

6

আপনি কি নেট। অ্যাসেমব্লিতে একটি রেফারেন্স যুক্ত করেছেন এবং অন্য কিছু নয়? আমি আপনার রেফারেন্সটি সরিয়ে ফেলব এবং তারপরে এটি পুনরায় যুক্ত করার চেষ্টা করব, আপনি ভিজ্যুয়াল স্টুডিও রেফারেন্স কথোপকথনের .NET ট্যাব থেকে নির্বাচন করেছেন তা নিশ্চিত করে - সর্বশেষতম সংস্করণটি জিএসি তে 2.0.0.0 হওয়া উচিত।


সম্পত্তি উইন্ডো থেকে সমাবেশের বিবরণ: নাম: System.configration পথ: সি: \ উইন্ডোজ \ Microsoft.NET \ ফ্রেমওয়ার্ক \ v2.0.50727 \ System.configration.dll সংস্করণ: 2.0.0.0 রানটাইম সংস্করণ: v2.0.50727 কিছু সন্দেহজনক দেখাচ্ছে? ধন্যবাদ!
পেনসিলসেট

না, এটি প্রত্যাশা মতো ঠিক। সত্যিই কী অদ্ভুত - আমি দুঃখিত, তবে আমি এর আগে কখনও দেখিনি। শুভকামনা!
ড্যান ডিপো

6
  1. প্রকল্পে ডান ক্লিক করুন
  2. ম্যানেজার নিউগেট প্যাকেজ নির্বাচন করুন
  3. System.Configration সন্ধান করুন
  4. মাইক্রোসফ্ট দ্বারা সিস্টেম। কনফিগারেশন। কনফিগারেশন ম্যানেজার নির্বাচন করুন
  5. ইনস্টল করুন

এখন তুমি পার:

using System.Configuration;

4

স্যানিটি পরীক্ষা করার জন্য, একটি নতুন ওয়েব অ্যাপ্লিকেশন প্রকল্প তৈরি করার চেষ্টা করুন, ডিফল্ট.এএসপিএক্স পৃষ্ঠার পিছনে কোডটি খুলুন। আপনার সংযোগের স্ট্রিং অ্যাক্সেস করতে পৃষ্ঠা_লডে একটি লাইন যুক্ত করুন।

এটিতে সিস্টেম থাকতে হবে on কনফিগারেশনটি ডিফল্ট হিসাবে রেফারেন্স হিসাবে যুক্ত করা উচিত। আপনার কোড ফাইলের শীর্ষে ইতিমধ্যে আপনার ব্যবহারের বিবৃতিটি দেখতে হবে।

ফাইলের পিছনে আমার কোডটি এখন এ জাতীয় দেখাচ্ছে এবং কোনও সমস্যা ছাড়াই সংকলিত।

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebApplication1
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
    }
  }
}

এটি ধরে নিয়েছে যে আমার ওয়েবকনফাইগের সাথে "MyConnicationStringName" এর মতো একটি নামের সাথে একটি সংযোগ স্ট্রিং রয়েছে ...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="MyConnectionStringName"
            connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

হ্যাঁ, এটি প্রাথমিক আমি জানি। তবে আপনার যদি কখনও কখনও আরও ভাল ধারণা না থাকে তবে এটি সত্যিই সহজ কিছু যা আপনার জানা উচিত তার বিরুদ্ধে কাজ করা উচিত।



2

যদি এই কোডটি কোনও লাইব্রেরি প্রকল্পের মতো আলাদা প্রকল্পে থাকে। System.configration- এ রেফারেন্স যুক্ত করতে ভুলবেন না।


0

আপনি ভুল করে কোনও ভিন্ন, সম্পর্কযুক্ত প্রকল্পে কোনও রেফারেন্স যুক্ত করলে আপনিও এই ত্রুটিটি পেতে পারেন। এটি আপনার ক্ষেত্রে প্রযোজ্য কিনা তা পরীক্ষা করে দেখুন।


0

এই সমস্যার সমাধান করতে সলিউশন এক্সপ্লোরার এ যান এবং রাইট ক্লিক ক্লিক করুন এবং ক্লিক করুন রেফারেন্স যুক্ত করুন এবং নেট নির্বাচন করুন এবং সিস্টেমের কনফিগারেশনটি ক্লিক করুন ঠিক আছে ক্লিক করুন


0

ডাটাবেস ওয়েবকনফিগের সাথে সংযোগ করতে কনফিগারেশন ম্যানেজার ফাইল যুক্ত করুন

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