Share via


컴파일러 경고(수준 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();
   }
}