Emit을 사용하여 프로젝트에서 일부 동적 유형을 생성합니다. 특히 내 서비스 인터페이스에서 "Decorators"를 대체합니다. WellKnownServiceType으로 .Net Remoting에 등록 된 클래스에 대해서도이 작업을 수행하고 있습니다. 그러나 .Net Remoting은 동적으로 방출되는 유형과 잘 작동하지 않는 것 같습니다. 첫째, 내가 가진 :.Net Remoting 서비스에 동적 유형 등록 문제.
System.IO.FileNotFoundException: Could not load file or assembly 'Dynamic, Version=0.0.0.0, Culture=neutral, PublicKeyToken=XXXX' or one of its dependencies. The system cannot find the file specified.
은 물론 파일이 존재하지 않는, 어셈블리가 동적이며, 나는 방출을 설정 한 경우에만 "실행"조립하지 SaveAndRun합니다.
그래서 형식을 등록하기 전에 Assembly.Load (type.Assembly.GetName())을 호출합니다. 지금, 내가 얻을 :
는System.Runtime.Remoting.RemotingException: Requested Service not found
Server stack trace:
at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
오류는 서버에서 예외로 클라이언트에 나타납니다. 서버 로그에 오류가 표시되지 않습니다.
아무도 이것이 "잘 알려진"문제인지, 동적 유형을 .net 원격 서비스를 호스팅하는 데 사용할 수 없는지에 대한 단서가 있습니까? 힌트 또는 포인터를 사용하여 해결할 수 있습니까?
** UPDATE * *** 내가 방출 사용을 중단했습니다. Emit은 핵심 어셈블리에 "InternalsVisibleTo"특성을 넣어야했습니다.이 특성은 난독 화에 심각하게 영향을 미쳤습니다. 대신 CodeDom 네임 스페이스를 사용하여 코드 생성으로 전환했습니다. 아름답게 작동합니다. 작업을 수행하는 실제 소스 코드를 볼 수 있으며 이는 디버깅 할 때 매우 유용합니다.
AssemblyResolve가 동적으로 "방사 된"어셈블리와 함께 작동하는지 확실하지 않습니다. –