Share via


컴파일러 오류 CS0281

업데이트: 2007년 11월

오류 메시지

'AssemblyName1'에 friend 액세스가 부여되었지만 출력 어셈블리 이름이 'AssemblyName2'입니다. 출력 어셈블리 이름이 일치하도록 변경하거나 'AssemblyName1'에 대한 참조를 추가하십시오.
Friend access was granted to 'AssemblyName1', but the output assembly is named 'AssemblyName2'. Try adding a reference to 'AssemblyName1' or changing the output assembly name to match.

Friend 액세스는 어셈블리에서 다른 어셈블리의 public이 아닌 형식을 볼 수 있도록 하는 CLR(공용 언어 런타임) 기능입니다. 이 오류는 friend 액세스를 허용하는 어셈블리에서 grantee 어셈블리에 대해 잘못된 이름을 지정한 경우에 발생합니다. 자세한 내용은 Friend 어셈블리(C# 프로그래밍 가이드)를 참조하십시오.

예제

다음 코드 시퀀스 샘플에서는 CS0281 오류가 발생하는 경우를 보여 줍니다.

강력한 이름의 어셈블리를 만드는 데 사용되는 파일은 다음과 같이 생성됩니다.

  • sn -d CS0281.snk

  • sn -k CS0281.snk

  • sn -i CS0281.snk CS0281.snk

  • sn -pc CS0281.snk key.publickey

  • sn -tp key.publickey

// CS0281.cs
// compile with: /target:library /keyfile:CS0281.snk
public class A {}

// CS0281_b.cs
// compile with: /target:library /keyfile:CS0281.snk /reference:CS0281.dll
[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("CS0281 , PublicKey=00240000048000009400000006020000002400005253413100040000010001004b2d4d56af7c50be2fcbbf97cb880b9e73ad84467a587191fef63aadc118a96cecf9d508cd679c907b6e20f71684300bdc2c0a851019af0c96b29bf8f1339753276041aefd67db46139e6348b3a12f29537b4dc6c2c19829df2c9ed6803f3c63c3b84cfa2728849386aea575c543a5f70fa85793d2946f15f7fe1ccb0c5e8fe0")]
class B : A {}

다음 샘플에서는 CS0281 오류가 발생하는 경우를 보여 줍니다.

이 샘플에서는 첫 번째 샘플의 출력 파일과 이름이 같은 출력 파일을 만듭니다. 이 문제를 해결하려면 구성 요소의 어셈블리 특성을 변경하지 말고 C 클래스를 추가하십시오.

// CS0281_c.cs
// compile with: /target:library /out:CS0281.dll /keyfile:CS0281.snk /reference:CS0281_b.dll
// CS0281 expected
[assembly:System.Reflection.AssemblyVersion("3")]
[assembly:System.Reflection.AssemblyCulture("en-us")]
class C : B {}
public class A {}