Я получаю "отсутствие ссылки на директиву или сборку" и не знаю, что происходит

Я пытаюсь разрешить пользователю вводить данные в текстовое поле, которое будет добавлено в файл 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 сгенерировала для меня класс-заглушку, я справился и вставил код из старого файла класса в этот заглушку, сохранил заглушку, и когда я попытался скомпилировать его, он сработает! Нет проблем.

Может быть решением, специфичным для моей сборки, но стоит попробовать.