2011-12-08 3 views
3

저는 내부 사용을위한 몇 가지 내부 방법이있는 공용 DLL을 가지고 있습니다.InternalsVisibleTo가 모든 어셈블리에서 작동하지 않습니다. 일부 작품, 일부 작품을하지 못합니다

[assembly: InternalsVisibleTo("WebServices, PublicKey=00240...b59a0")] 
[assembly: InternalsVisibleTo("UnitTests, PublicKey=00240...dcf98")] 
[assembly: InternalsVisibleTo("PATs, PublicKey=00240...e65cf")] 

이 내부 방법 UnitTests 및 거주자 만 WebService에 완벽한 일 : 나는 또한 3 다른 프로젝트의 웹 서비스, UnitTests 및 거주자 공통 프로젝트의 AssemblyInfo.cs에서

이 옆에, 나는이 라인을 추가했다. WebService 프로젝트에 코드를 작성할 때 IntelliSense 상자에서 이러한 내부 메서드를 볼 수 있습니다. 오류 경고가 나는 코드를 작성하지만 프로젝트를 빌드 할 때, 나는이 오류 메시지가 왔을 때이 없습니다

' 내부 메소드 이름'

에서의 정의를 포함하지 않는

'일반적인' 그 때 어셈블리 이름이 어떤 식 으로든 잘못되었다고 생각했습니다. 그리고 나는 확실히 정말 잘못 만들려고 :

액세스 할 수없는 그런 다음 WebService에 프로젝트에서, 그것이 내가이 메시지와 함께 컴파일하지 않고 일반적인 내부 방법을 사용하여 라인에서 바로 빨간색으로 변합니다

[assembly: InternalsVisibleTo("WebSer, PublicKey=00240...b59a0")] 

내부 방법 ' 내부 메소드 이름'여기가

그래서 난 내 어셈블리 이름이 올바른지 생각하지만 난 내 웹 서비스 프로젝트에서 내부 방법을 사용할 수없는 이유를 나는 아직도 모른다.

는 '내부 메서드 이름'에 대한 정의가 포함되어 있지 않습니다

'공통'그것은 방법을 의미합니다 :

+0

나는 이것에 대한 단서를 발견했다. 내 WebService 프로젝트에서 Workflow를 사용했습니다. 모든 워크 플로를 제거하면 빌드가 성공적이었습니다. 그리고 워크 플로를 프로젝트에 다시 추가하면 위의 오류가 발생합니다. 워크 플로를 사용하는 어셈블리의 친숙한 어셈블리가 잘못되었다는 것을 아는 사람이 있습니까? –

답변

0

여기에 준 첫 번째 오류 메시지가 잘못 네임 스페이스를 사용하고 있음을 시사한다 당신은 그것을 사용하고 싶지 않습니다. 아마도 다른 네임 스페이스에있을 것입니다. 특히 클래스에 확장 메서드를 사용하는 경우 특히 그렇습니다.

당신은 아마 눈치 챘을 때, 당신이있어 두 번째 오류는 InternalsVisibleTo 표현에 잘못된 이름을 붙여서, 다른 :

여기에 '내부 메서드 이름'

를 내부 메서드에 액세스 할 수 없습니다

두 번째 오류는 내부 DLL을 다른 DLL에 노출시키는 것과 관련이 있습니다.

Visual Studio가 미쳐서 다시 시작/다시 작성하는 것으로 충분할 수도 있습니다.