ユーザーがweb.configファイルに追加されるテキストボックスにデータを入力できるようにしようとしています。関連行をweb.configファイルに追加しましたが、このクラスを作成するとすべてがうまくいきません。
アプリを実行しようとするたびに、usingディレクティブまたはAssembly refenrenceエラーが表示されません。私はこの質問が尋ねられた他の回を見ましたが、どこが間違っているのかわかりません。問題は、私がVisual Studioを初めて使用することであり、答えが何であるかについて空白のままにしていることです。
以下は、エラーを生成しているクラスファイルです。あなたが私を助けるために必要なものすべてを含めたことを願っています。ありがとうございました。
using System.Collections.Generic;
using System.Linq;
using System.Configuration;
namespace WebConfigDemo
{
public class CompanyConfigSection : ConfigurationSection
{
[ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
public CompanyConfigCollection Companies
{
get
{
return (CompanyConfigCollection)this[""];
}
set
{
this[""] = value;
}
}
}
public class CompanyConfigElement : ConfigurationElement
{
[ConfigurationProperty("id", IsKey = true, IsRequired = true)]
public int Id
{
get
{
return (int)this["id"];
}
set
{
this["id"] = value;
}
}
[ConfigurationProperty("name", IsRequired = true)]
public string Name
{
get
{
return this["name"].ToString();
}
set
{
this["name"] = value;
}
}
} '
public class CompanyConfigCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new CompanyConfigElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((CompanyConfigElement)element).Id;
}
}
public class CompaniesConfig
{
private static readonly Dictionary<int, CompanyConfigElement>
Elements;
static CompaniesConfig()
{
Elements = new Dictionary<int, CompanyConfigElement>();
var section = (CompanyConfigSection)ConfigurationManager.GetSection ("companies");
foreach (CompanyConfigElement system in section.Companies)
Elements.Add(system.Id, system);
}
public static CompanyConfigElement GetCompany(int companyId)
{
return Elements[companyId];
}
public static List<CompanyConfigElement> Companies
{
get
{
return Elements.Values.ToList();
}
}
}
} '
どんな助けでも大歓迎です
プロジェクト参照にSystem.Configuration dllが追加されていない可能性があります。デフォルトでは存在しないため、手動で追加する必要があります。
[参照設定]を右クリックし、.netアセンブリでSystem.Configurationを検索します。
参照にあるかどうかを確認してください...
右クリックして[参照の追加...]を選択
。NetアセンブリのリストでSystem.Configurationを見つけて選択し、[OK]をクリックします...
アセンブリが参照に表示されるはずです...
参照dllの.Netフレームワークは、dllが参照されるプロジェクトの.Netフレームワークバージョンと同じである必要があります
見積もりを確認しました'
最初の行と最後の行の最後。
'using System.Collections.Generic;
これは元のコードに存在するのですか、それとも何らかのフォーマットの間違いですか?
using
ステートメントは正しいようです。
おそらく、System.configuration.dll
へのアセンブリ参照がありませんか?
プロジェクトの「参照」フォルダーを右クリックし、「参照の追加...」をクリックします
この問題は、コードを使用しようとしている外部DLLへの参照がアプリケーションにないために発生します。通常、Visual Studioは、どのオブジェクトをどのように処理すればよいのかわからないオブジェクトについてのアイデアを提供する必要があります。
ソリューションエクスプローラーを見て、プロジェクト参照を右クリックして、追加->に進み、必要なものを検索する必要があります。ほとんどの人がここで指摘しているように、参照ウィンドウのフレームワークオプションの下にある必要があるので、System.Configurationアセンブリである可能性が高いです。これで問題が解決するはずです。
今日、私は以前同じ問題を抱えていました。参照しようとしていたクラスファイルがコンパイラによって表示されない理由を理解できませんでした。私は最近、問題のクラスファイルの名前空間を別の既存の名前空間に変更しました。 (クラスをインスタンス化しようとしていたクラスの新しい名前空間と以前の名前空間への参照も使用していました)
コンパイラがクラスをインスタンス化しようとしたときに参照が不足していると言っていた場合、右クリックして「クラススタブを生成」を押します。 Visual Studioがクラススタブを生成したら、古いクラスファイルのコードをこのスタブに貼り付けて保存し、スタブを保存して、もう一度コンパイルしようとするとうまくいきました!問題ありません。
私のビルドに固有のソリューションかもしれませんが、試してみる価値はあります。