컴파일러 경고(수준 2) CS1701
업데이트: 2007년 11월
오류 메시지
"Assembly Name #1" 어셈블리 참조가 "Assembly Name #2"과(와) 일치한다고 간주합니다. 런타임 정책을 지정해야 합니다.
Assuming assembly reference "Assembly Name #1" matches "Assembly Name #2", you may need to supply runtime policy
두 어셈블리의 릴리스 및/또는 버전 번호가 다릅니다. 통합을 위해 응용 프로그램의 .config 파일에 지시문을 지정하고 다음 예제 코드와 같이 어셈블리의 강력한 이름을 올바르게 지정해야 합니다.
예제
여러 파일로 구성된 다음 샘플에서는 두 개의 서로 다른 외부 별칭을 사용하여 어셈블리를 참조합니다. 첫 번째 샘플에서는 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();
}
}