2010-02-03 3 views
4

VB.NET 환경에서 NServiceBus 라이브러리를 사용하는 응용 프로그램을 작성하려고합니다. 우리는 다음과 유사한 오류에 의해 좌절 봤는데 :다른 프로젝트에서 NServiceBus 어셈블리를 참조 할 때 "참조 필요"오류가 발생했습니다.

참조 어셈블리에 필요한 'NServiceBus, 버전 = 2.0.0.1071, 문화 = 중립, PublicKeyToken = 9fc386479f8a226c'구현 된 인터페이스를 포함하는 'NServiceBus.IMessageHandler`1' . 프로젝트에 하나 추가하십시오.

프로젝트에는 이미 동일한 NServiceBus 2.0 RC2 배포에서 NServiceBus.dll 및 NServiceBus.Core.dll에 대한 참조가 포함되어 있습니다.


단계 재현 :

  1. 가 참고로 NServiceBus.dll 및 NServiceBus.Core.dll 추가 새로운 VB 클래스 라이브러리 프로젝트 (.NET 3.5)를 만듭니다.
  2. 는 Class1.vb의에 다음 코드를 넣습니다 :

    Imports NServiceBus.Sagas.Impl 
    Class Test 
        Public Function Foo() As SagaMessageHandler 
         Return Nothing 
        End Function 
    End Class 
    
  3. 이제 위에서 언급 한 컴파일러 오류가 표시됩니다.

C#으로 작성된 동일한 프로젝트에는 컴파일 오류가 없습니다.


이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? (그리고 네, 제가 선호하는 솔루션은 C#으로 바꾸고 있습니다 만, 지금은 받아 들일 수없는 것이 아닙니다.)

+0

매우 이상하게 여기에서도 재현 할 수있었습니다. 소스를 풀어서 로컬로 재 구축 할 수 있습니까? –

+0

그래, 트렁크 소스를 끌어 내려 제공된 빌드 스크립트를 사용하여 로컬로 빌드했습니다. 같은 문제가있었습니다. 아직 빌드 스크립트를보고이 스크립트가 원인이되는 작업을 수행하고 있는지 확인하지 않았습니다. – cwegrzyn

답변

3

ILMerge 관련 문제인 직감에서 this post suggesting that assembly signing might be responsible을 발견했습니다.

NServiceBus 트렁크 소스를 다운로드하고 src/core/NServiceBus.sln을 열고 솔루션의 각 프로젝트를 소스 트리 루트에서 NServiceBus.snk를 사용하여 어셈블리에 서명하도록 설정했습니다. NServiceBus를 재 구축 한 후에 생성 된 새 DLL은 원래 게시물에서 컴파일러 오류를 수정했습니다.

2

프로젝트의 트렁크와 2.0 분기에서 모두 강력한 이름이 지정되었습니다.

희망이 도움이됩니다.

+0

최신 3.0 서명 어셈블리에서도 동일한 문제가 발생하지 않습니다. – tommed

관련 문제