it-swarm.com.de

Ich bekomme die "fehlende Direktive oder Assembly-Referenz" und keine Ahnung, was schief läuft

Ich versuche einem Benutzer zu erlauben, Daten in ein Textfeld einzugeben, das der Datei web.config hinzugefügt wird. Ich habe die relevanten Zeilen zur Datei web.config hinzugefügt, aber wenn ich diese Klasse mache, geht alles schief.

Immer wenn ich versuche, meine App auszuführen, verpassen Sie immer die Fehlermeldung, dass Sie eine using-Anweisung oder einen Assembly-Referrenzfehler erhalten. Ich habe mir die anderen Zeiten angesehen, als diese Frage gestellt wurde, und ich kann nicht herausfinden, wo ich falsch liege. Die Sache ist, dass ich in Visual Studio extrem neu bin und einfach leer gelassen werde, was die Antwort sein könnte.

Unten ist die Klassendatei, die den Fehler generiert. Ich hoffe, ich habe alles dabei, was Sie brauchen, um mir zu helfen. Vielen Dank.

 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(); 
                }      
            }  
}
}  '

Jede Hilfe wird geschätzt

10
Scubacode

Sie haben wahrscheinlich nicht die System.Configuration-DLL zu den Projektverweisen hinzugefügt. Es ist nicht standardmäßig vorhanden, und Sie müssen es manuell hinzufügen.

Klicken Sie mit der rechten Maustaste auf die Verweise und suchen Sie in den .net-Assemblys nach System.Configuration.

Prüfen Sie, ob es in Ihren Referenzen steht ...

enter image description here

Klicken Sie mit der rechten Maustaste und wählen Sie Referenz hinzufügen ....

enter image description here

Find System.Configuration in der Liste der .Net-Baugruppen, wählen Sie es aus und klicken Sie auf OK ...

enter image description here

Die Assembly sollte nun in Ihren Referenzen erscheinen ...

enter image description here

18
John Kraft

Das .Net-Framework der referenzierenden DLL sollte mit der .Net-Framework-Version des Projekts übereinstimmen, in dem die DLL referenziert wird

4
Gayatri Dingare

Ich habe ein Zitat ' in Ihrer 1. Zeile und auch am Ende Ihrer letzten Zeile beobachtet.

'using System.Collections.Generic;

Ist das in Ihrem Originalcode vorhanden oder liegt ein Formatierungsfehler vor?

0
Microsoft DN

Ihre using-Anweisungen erscheinen korrekt.

Vermissen Sie vielleicht die Assembly-Referenz zu System.configuration.dll?

Klicken Sie mit der rechten Maustaste auf den Ordner "Verweise" in Ihrem Projekt und klicken Sie auf "Verweis hinzufügen ...".

0

Dieses Problem wird dadurch verursacht, dass Ihrer Anwendung ein Verweis auf eine externe DLL fehlt, aus der Sie versuchen, Code zu verwenden. Normalerweise sollte Visual Studio Ihnen eine Vorstellung davon geben, mit welchen Objekten es nicht weiß, was es tun soll. Dies sollte ein Schritt in die richtige Richtung sein.

Sie müssen im Projektmappen-Explorer nachsehen und mit der rechten Maustaste auf die Projektverweise klicken und dann auf Hinzufügen -> klicken und nach dem gewünschten suchen. Es ist höchstwahrscheinlich die System.Configuration-Assembly, auf die die meisten Leute hier hingewiesen haben, während sie im Referenzfenster unter der Option Framework stehen sollte. Das sollte dein Problem lösen.

0
Jesse Carter

Ich hatte heute früher das gleiche Problem. Ich konnte nicht herausfinden, warum die Klassendatei, auf die ich verweisen wollte, vom Compiler nicht gesehen wurde. Ich hatte kürzlich den Namespace der betreffenden Klassendatei in einen anderen, aber bereits vorhandenen Namespace geändert. (Ich hatte auch Verweise auf die neuen und früheren Namespaces der Klasse, in denen ich versuchte, sie zu instanziieren.)

Wo der Compiler mir mitteilte, dass mir beim Versuch, die Klasse zu instanziieren, ein Verweis fehlte, habe ich mit der rechten Maustaste geklickt und auf "Klassenstub erzeugen" geklickt. Nachdem Visual Studio einen Klassen-Stub für mich erstellt hatte, kopierte und fügte ich den Code aus der alten Klassendatei in diesen Stub ein, speicherte den Stub und als ich versuchte, erneut zu kompilieren, funktionierte es! Keine Probleme.

Könnte eine spezifische Lösung für meinen Build sein, ist aber einen Versuch wert.

0
Alex Vallejo