2012-07-31 5 views
2

작성된 단위 테스트에 문제점이 있습니다. 나는 2 개의 프로젝트가있다. 하나는 "진짜"프로젝트이고 다른 하나는 단위 테스트 프로젝트입니다. 실제 프로젝트에서 메소드를 클릭하고 "단위 테스트 만들기"를 선택하십시오. 그런 다음 testproject에서 unit-test 코드를 얻습니다.C# 서명 된 어셈블리를 사용한 unit-test

지금, 컴파일 한 후 나는 다음과 같은 오류 메시지 수 :

친구 어셈블리 참조 '의 AssemblyName을'이 (가) 잘못되었습니다. 강력한 이름의 서명 된 어셈블리는 InternalsVisibleTo 선언에 공개 키를 지정해야합니다.

그런 다음 실제 프로젝트의 AssemblyInfo.cs에서 InternalsVisibleTo-Declaration에 공개 키를 추가했습니다. 하지만 지금은 내부 및 봉인 된 실제 프로젝트의 각 클래스에 대해 컴파일 오류가 발생합니다. 메시지는 다음과 같습니다

'클래스 이름'액세스 할 수 없습니다 인해 보호 수준에

나는이 문제를 해결하기 위해 무엇을 할 수 있는가? 어떤 아이디어?

+0

테스트가 동일한 네임 스페이스/어셈블리에 있습니까? – PeskyGnat

+0

아니요. 네임 스페이스가 다릅니다. – Tomtom

+0

'internal'지정자는 액세스가 동일한 어셈블리로 제한된다는 것을 나타냅니다. 따라서 테스트가 다른 어셈블리에있는 경우이 오류가 나타날 수 있습니다. – PeskyGnat

답변

1

쉼표와 PublicKey를 입력하십시오. AssemblyInfo 파일에 붙여 넣을 때 공개 키의 줄 바꿈 등을 제거해야합니다.

[assembly: InternalsVisibleTo("AssemblyName, PublicKey=xxx")] 
0

예 공용 키 토큰을 추가했습니다. 다음과 같이 보입니다 :

[assembly: InternalsVisibleTo("NAMESPACE, PublicKey=00240000048000009 40000000602000000240000525341310004000001000100354f0966de4a992baa1ed0f2 faf643f86fd2c74aee8b9dc6c0321f9d658166658ec154aaed70ab4b92a21a3c1e7e53 200232043c0d0b791496fd0201d21f18433ee9507022f2a72829d1dd32b106f86c68e 620d2a39f02f3a8b82aa23196ef7f7f4880020dd340dd2dfecdd1b3051b1e659c9e18c 8e21cc90bc33de306712b86")] 
+0

"NAMESPACE"란 사실 어셈블리 이름을 의미합니까? 그렇지 않은 경우 문제가 될 수 있습니다. – Iridium

+0

죄송합니다. AssemblyName은 InternalsVisibleTo의 네임 스페이스가 아닙니다. – Tomtom

관련 문제