共用方式為


編譯器警告 (層級 1) CS1684

更新:2007 年 11 月

錯誤訊息

型別 'Type Name' 的參考表示它是在 'Namespace' 中定義的,但是找不到

若命名空間中的參考表示是參考另一個命名空間中的型別,但此型別不存在,便會造成這個錯誤。例如,mydll.dll 表示型別 A 存在於 yourdll.dll 中,但 yourdll.dll 中並沒有這個型別。造成這個錯誤的可能原因是您使用的 yourdll.dll 版本太舊,而其中尚未定義 A。

下列範例會產生 CS1684。

範例

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

現在我們重新建置第一個組件,並且不在重新編譯時定義類別 C2 的定義。

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

這個模組透過識別項 Ref 參考第二個模組。但是第二個模組包含對類別 C2 的參考,而由於前一個步驟進行了編譯,C2 已不存在,因此這個模組的編譯會傳回 CS1684 錯誤訊息。

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