Compilerfehler CS0246Compiler Error CS0246

Der Typ- oder Namespacename „type/namespace“ konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)

Ein im Programm verwendeter Typ oder Namespace wurde nicht gefunden.A type or namespace that is used in the program was not found. Sie haben möglicherweise vergessen, auf die Assembly zu verweisen (/reference), die den Typ enthält, oder Sie haben die erforderliche Using-Direktivenicht hinzugefügt.You might have forgotten to reference (/reference) the assembly that contains the type, or you might not have added the required using directive. Oder es liegt möglicherweise ein Problem mit der Assembly vor, auf die Sie verweisen möchten.Or, there might be an issue with the assembly you are trying to reference.

In den folgenden Situationen wird Compilerfehler CS0246 generiert.The following situations cause compiler error CS0246.

  • Ist der Typ- oder Namespacename richtig geschrieben?Did you misspell the name of the type or namespace? Ohne den richtigen Namen kann der Compiler die Definition für den Typ oder Namespace nicht finden.Without the correct name, the compiler cannot find the definition for the type or namespace. Das kommt oft vor, weil beim Typnamen nicht die richtige Groß-/Kleinschreibung verwendet wurde.This often occurs because the casing used in the name of the type is not correct. Dataset ds; generiert z. B. CS0246, weil das „s“ in „ Dataset“ groß geschrieben werden muss.For example, Dataset ds; generates CS0246 because the s in Dataset must be capitalized.

  • Wenn der Fehler für einen Namespacenamen auftritt, haben Sie einen Verweis (/reference) auf die Assembly mit dem Namespace hinzugefügt?If the error is for a namespace name, did you add a reference (/reference) to the assembly that contains the namespace? Angenommen, Ihr Code enthält die Direktive using Accessibility.For example, your code might contain the directive using Accessibility. Wenn das Projekt jedoch nicht auf die Assembly „Accessibility.dll“ verweist, wird der Fehler CS0246 gemeldet.However, if your project does not reference the assembly Accessibility.dll, error CS0246 is reported. Weitere Informationen finden Sie unter Verwalten von Verweisen in einem Projekt.For more information, see Managing references in a project

  • Wenn der Fehler für einen Typnamen auftritt: Haben Sie die geeignete using-Direktive bzw. alternativ den vollqualifizierten Namen des Typs verwendet?If the error is for a type name, did you include the proper using directive, or, alternatively, fully qualify the name of the type? Betrachten Sie hierzu die folgende Deklaration: DataSet ds.Consider the following declaration: DataSet ds. Um den DataSet -Typ zu verwenden, sind zwei Dinge erforderlich.To use the DataSet type, you need two things. Erstens wird ein Verweis auf die Assembly benötigt, mit der die Definition für den DataSet -Typ eingeschränkt wird.First, you need a reference to the assembly that contains the definition for the DataSet type. Zweitens brauchen Sie eine using -Direktive für den Namespace, in dem sich DataSet befindet.Second, you need a using directive for the namespace where DataSet is located. Weil sich DataSet z. B. im System.Data -Namespace befindet, benötigen Sie die folgende Direktive am Anfang des Codes: using System.Data.For example, because DataSet is located in the System.Data namespace, you need the following directive at the beginning of your code: using System.Data.

    Die using -Direktive ist nicht erforderlich.The using directive is not required. Wenn Sie die Direktive jedoch weglassen, müssen Sie den DataSet -Typ vollständig qualifizieren, wenn Sie darauf verweisen.However, if you omit the directive, you must fully qualify the DataSet type when referring to it. Vollständige Qualifizierung bedeutet, dass Sie jedes Mal, wenn Sie im Code auf den Typ verweisen, sowohl den Namespace als auch den Typ angeben müssen.Full qualification means that you specify both the namespace and the type each time you refer to the type in your code. Wenn Sie die using -Direktive im vorherigen Beispiel weglassen, müssen Sie System.Data.DataSet ds anstelle von ds schreiben, um DataSet dszu deklarieren.If you omit the using directive in the previous example, you must write System.Data.DataSet ds to declare ds instead of DataSet ds.

  • Haben Sie eine Variable oder ein anderes Sprachelement verwendet, wo ein Typ erwartet wurde?Did you use a variable or some other language element where a type was expected? Wenn Sie z. B. in einer is -Anweisung ein Type -Objekt anstelle eines tatsächlichen Typs verwenden, erhalten Sie den Fehler CS0246.For example, in an is statement, if you use a Type object instead of an actual type, you get error CS0246.

  • Haben Sie eine using-Aliasdirektive ohne vollständige Qualifizierung des Typnamens verwendet?Did you use a using alias directive without fully qualifying the type name? Eine using -Aliasdirektive verwendet zum Auflösen von Typen nicht die using -Direktiven in der Quellcodedatei.A using alias directive does not use the using directives in the source code file to resolve types. Im folgende Beispiel wird CS0246 generiert, da der Typ List<int> nicht vollqualifiziert ist.The following example generates CS0246 because the type List<int> is not fully qualified. Die using -Direktive für System.Collections.Generic verhindert den Fehler nicht.The using directive for System.Collections.Generic does not prevent the error.

    using System.Collections.Generic;  
    
    // The following declaration generates CS0246.  
    using myAliasName = List<int>;   
    
    // To avoid the error, fully qualify List.  
    using myAliasName2 = System.Collections.Generic.List<int>;  
    

    Wenn dieser Fehler in Code auftritt, der zuvor funktioniert hat, suchen Sie zuerst nach fehlenden oder nicht aufgelösten Verweise im Projektmappen-Explorer.If you get this error in code that was previously working, first look for missing or unresolved references in Solution Explorer. Müssen Sie ein NuGet-Paket neu installieren?Do you need to re-install a NuGetpackage? Informationen darüber, wie das Buildsystem nach Verweisen sucht, finden Sie unter Resolving file references in team build.For information about how the build system searches for references, see Resolving file references in team build. Wenn alle Verweise korrekt zu sein scheinen, suchen Sie in Ihrem Verlauf für die Quellcodeverwaltung nach den Änderungen in der CSPROJ-Datei und/oder der lokalen Quelldatei.If all references seem to be correct, look in your source control history to see what has changed in your .csproj file and/or your local source file.

    Wenn Sie noch nicht erfolgreich auf den Verweis zugegriffen haben, verwenden Sie den Objektkatalog zum Überprüfen der Assembly, die diesen Namespace enthalten soll, und stellen Sie sicher, dass der Namespace vorhanden ist.If you haven’t successfully accessed the reference yet, use the Object Browser to inspect the assembly that is supposed to contain this namespace and verify that the namespace is present. Wenn Sie mit dem Objektkatalog festgestellt haben, dass die Assembly den Namespace enthält, entfernen Sie die using-Anweisung für den Namespace, und prüfen Sie, welche anderen Elemente unterbrochen werden.If you verify with Object Browser that the assembly contains the namespace, try removing the "using" directive for the namespace and see what else breaks. Das Hauptproblem liegt möglicherweise bei einem anderen Typ in einer anderen Assembly.The root problem may be with some other type in another assembly.

Im folgende Beispiel wird CS0246 generiert, weil eine erforderliche using -Direktive nicht vorhanden ist.The following example generates CS0246 because a necessary using directive is missing.

// CS0246.cs  
//using System.Diagnostics;  

public class MyClass  
{  
    // The following line causes CS0246. To fix the error, uncomment  
    // the using directive for the namespace for this attribute,  
    // System.Diagnostics.  
    [Conditional("A")]  
    public void Test()  
    {  
    }  

    public static void Main()  
    {  
    }  
}  

Im folgenden Beispiel wird CS0246 generiert, weil ein Objekt vom Typ Type verwendet wurde, wo eigentlich der Typ erwartet wurde.The following example causes CS0246 because an object of type Type was used where an actual type was expected.

// CS0246b.cs  
using System;  

class ExampleClass  
{  
    public bool supports(object o, Type t)  
    {  
        // The following line causes CS0246. You must use an  
        // actual type, such as ExampleClass, String, or Type.  
        if (o is t)  
        {  
            return true;  
        }  
        return false;  
    }  
}  

class Program  
{  
    public static void Main()  
    {  
        ExampleClass myC = new ExampleClass();  
        myC.supports(myC, myC.GetType());  
    }  
}