共用方式為


編譯器警告 (層級 2) CS1701

更新:2007 年 11 月

錯誤訊息

假設組件參考 "Assembly Name #1" 與 "Assembly Name #2" 相符,您可能需要提供執行階段原則

兩個組件的發行和/或版本號碼不同。為使兩者統一,您必須在應用程式的 .config 檔案中指定指示詞,以及提供組件的正確強式名稱 (Strong Name),如以下範例程式碼所示。

範例

下列多檔案範例參考使用兩個不同外部別名的組件。第一個範例會建置較舊版本的程式碼,該程式碼會建立組件 CS1701_d。

// CS1701_a.cs
// compile with: /target:library /out:cs1701_d.dll /keyfile:mykey.snk
using System.Reflection;
[assembly:AssemblyVersion("1.0")]
public class A {
   public void M1() {}
}

public class C1 {}

這是建立新版組件 CS1701_d 的程式碼。請注意,會編譯到和舊版不同的目錄,因為這兩個版本的輸出檔會使用相同的名稱。

// CS1701_b.cs
// compile with: /target:library /out:c:\\cs1701_d.dll /keyfile:mykey.snk
using System.Reflection;
[assembly:AssemblyVersion("2.0")]
public class A {
   public void M2() {}
   public void M1() {}
}

public class C2 {}
public class C1 {}

這個範例會設定外部別名 A1 和 A2。

// CS1701_c.cs
// compile with: /target:library /reference:A2=c:\\cs1701_d.dll /reference:A1=cs1701_d.dll

extern alias A1;
extern alias A2;
// using System;
using a1 = A1::A;
using a2 = A2::A;

public class Ref {
   public static a1 A1() { return new a1(); }
   public static a2 A2() { return new a2(); }

   public static A1::C1 M1() { return new A1::C1(); }
   public static A2::C2 M2() { return new A2::C2(); }
}

這個方法會使用兩個不同的 A 別名呼叫方法。下列範例會產生 C1701。

// CS1701_d.cs
// compile with: /reference:c:\\CS1701_d.dll /reference:CS1701_c.dll
// CS1701 expected
class Tester {
   public static void Main() {
      Ref.A1().M1();
      Ref.A2().M2();
   }
}