Sdílet prostřednictvím


Compilerwarnung (Stufe 1) CS1684

Aktualisiert: November 2007

Fehlermeldung

Der Verweis auf Typ "Typname" wurde angeblich in "Namespace" deklariert, konnte jedoch nicht gefunden werden.
Reference to type 'Type Name' claims it is defined in 'Namespace', but it could not be found

Dieser Fehler wurde möglicherweise von einem Verweis innerhalb eines Namespaces verursacht, der auf einen Typ verweist, der laut Verweis innerhalb eines zweiten Namespaces vorhanden ist. Dieser Typ ist jedoch nicht vorhanden. In der Datei mydll.dll wird z. B. angegeben, dass Typ A innerhalb von yourdll.dll vorhanden ist. Tatsächlich ist der Typ dort aber nicht vorhanden. Eine mögliche Ursache dieses Fehlers besteht darin, dass die verwendete Version der yourdll.dll zu alt ist und dass A noch nicht definiert wurde.

Im folgenden Beispiel wird CS1684 generiert.

Beispiel

// CS1684_a.cs
// compile with: /target:library /keyfile:CS1684.key
public class A {
   public void Test() {}
}

public class C2 {}

// CS1684_b.cs
// compile with: /target:library /r:cs1684_a.dll
// post-build command: del /f CS1684_a.dll
using System;
public class Ref 
{
   public static A GetA() { return new A(); }
   public static C2 GetC() { return new C2(); }
}

Nun erstellen Sie die erste Assembly neu und lassen dabei die Definition der Klasse C2 weg, die bei der erneuten Kompilierung nicht definiert werden soll.

// CS1684_c.cs
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll
public class A {
   public void Test() {}
}

In diesem Modul wird über den Bezeichner Ref auf das zweite Modul verwiesen. Das zweite Modul enthält jedoch einen Verweis auf die C2-Klasse, die aufgrund der Kompilierung im vorangehenden Schritt nicht mehr vorhanden ist. Daher wird beim Kompilieren dieses Moduls die Fehlermeldung CS1684 zurückgegeben.

// CS1684_d.cs
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll
// CS1684 expected
class Tester
{
   public static void Main()
   {
      Ref.GetA().Test();
   }
}