컴파일러 오류 CS0281
'AssemblyName1'에 Friend 액세스 권한이 부여되었지만 출력 어셈블리의 이름이 'AssemblyName2'로 지정되었습니다. 출력 어셈블리 이름이 일치하도록 변경하거나 'AssemblyName1'에 대한 참조를 추가하세요.
Friend 액세스는 어셈블리가 다른 어셈블리의 public이 아닌 형식을 볼 수 있도록 하는 새로운 CLR(공용 언어 런타임) 기능입니다. 이 오류는 Friend 액세스 권한을 부여하는 어셈블리가 피부여자 어셈블리에 대한 잘못된 이름을 지정하는 경우에 발생합니다. 자세한 내용은 Friend 어셈블리를 참조하세요.
코드 샘플의 다음 시퀀스는 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 {}
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.