Я получаю "отсутствие ссылки на директиву или сборку" и не знаю, что происходит
Я пытаюсь разрешить пользователю вводить данные в текстовое поле, которое будет добавлено в файл web.config. Я добавил соответствующие строки в файл web.config, но когда я делаю этот класс, все идет не так.
Я продолжаю получать, если вам не удастся использовать директиву или ошибку refendrence сборки, когда я пытаюсь запустить мое приложение. Я смотрел на другие вопросы, которые задавали этот вопрос, и не может показаться, что я ошибаюсь. Дело в том, что я необычайно новичок в 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();
}
}
}
} '
Любая помощь приветствуется
Ответы
Ответ 1
Вероятно, у библиотек System.Configuration не добавлены ссылки на проект. Это не по умолчанию, и вы должны добавить его вручную.
Щелкните правой кнопкой мыши ссылку и выполните поиск System.Configuration в сборках .net.
Проверьте, не указана ли она в ваших ссылках...
![enter image description here]()
Щелкните правой кнопкой мыши и выберите Добавить ссылку...
![enter image description here]()
Найдите System.Configuration в списке .Net Assemblies, выберите его и нажмите Ok...
![enter image description here]()
Теперь сборка должна появиться в ваших ссылках...
![enter image description here]()
Ответ 2
. Структура сети ссылочной DLL должна быть такой же, как версия .NET Framework проекта, в которой dll ссылается
Ответ 3
Ваши заявления об using
кажутся правильными.
Возможно, вам не хватает ссылки на сборку System.configuration.dll
?
Щелкните правой кнопкой мыши папку "Ссылки" в вашем проекте и нажмите "Добавить ссылку..."
Ответ 4
Эта проблема будет вызвана тем, что ваше приложение не имеет ссылки на внешнюю dll, с которой вы пытаетесь использовать код. Обычно Visual Studio должна дать вам представление о том, какие объекты он не знает, что делать, чтобы это было шагом в правильном направлении.
Вам нужно посмотреть в проводнике решений и щелкнуть правой кнопкой мыши по ссылкам на проект, а затем перейти к добавлению → и найти тот, который вам нужен. Скорее всего, сборка System.Configuration, как указано большинством людей, должна находиться под опцией Framework в окне ссылок. Это должно решить вашу проблему.
Ответ 5
Я заметил цитату '
в вашей первой строке, а также в конце вашей последней строки.
'using System.Collections.Generic;
Это присутствует в вашем исходном коде или некоторая ошибка форматирования?
Ответ 6
У меня была такая же проблема и сегодня. Я не мог понять, почему файл класса, который я пытался ссылаться, не видел компилятор. Недавно я изменил пространство имен рассматриваемого файла класса на другое, но уже существующее пространство имен. (Я также использовал ссылки на новые и предыдущие пространства имен классов, где я пытался его создать)
Где компилятор говорил мне, что мне не хватало ссылки при попытке создать экземпляр класса, я щелкнул правой кнопкой мыши и нажал "сгенерировать классный заглушку". После того, как Visual Studio сгенерировала для меня класс-заглушку, я справился и вставил код из старого файла класса в этот заглушку, сохранил заглушку, и когда я попытался скомпилировать его, он сработает! Нет проблем.
Может быть решением, специфичным для моей сборки, но стоит попробовать.