編譯器警告 (層級 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();
}
}