3

解决此问题的最佳方法是什么?显然,endpointconfig 中的“try…catch”(如下所示)无济于事,因为异常发生得更早。这看起来很基本,但我完全被困在这里(:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher, UsingTransport<Msmq>, IWantCustomInitialization
    {
        public void Init()
        {
            try
            {              
                Configure
                    .With()
                    .StructureMapBuilder(ObjectFactory.Container)
                    .NLog(new NLog.Targets.FileTarget
                    {
                        FileName = "${basedir}/logs/${shortdate}.log",
                        Layout = "${longdate} ${uppercase:${level}} ${message}"
                    })
                    .UnicastBus();               
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex);
            }
        }
    }

*例外* * *

Magnum.StateMachine.StateMachineException: Exception occu
rred in Topshelf.Internal.ServiceController`1[[NServiceBus.Hosting.Windows.Windo
wsHost, NServiceBus.Host, Version=4.0.0.0, Culture=neutral, PublicKeyToken=9fc38
6479f8a226c]] during state Initial while handling OnStart ---> Microsoft.Practic
es.ServiceLocation.ActivationException: Activation error occured while trying to
 get instance of type WindowsHost, key "MusicMind.Host.EndpointConfig, MusicMind
.Host, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" ---> System.Reflec
tion.ReflectionTypeLoadException: Mindestens ein Typ in der Assembly kann nicht
geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere
Informationen benötigen.
   bei System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   bei System.Reflection.RuntimeModule.GetTypes()
   bei System.Reflection.Assembly.GetTypes()
   bei NServiceBus.Hosting.Helpers.AssemblyListExtensions.<AllTypes>d__0.MoveNex
t() in c:\TeamCity\buildAgent\work\28bfdd0d351fb1d3\src\NServiceBus.Core\Hosting
\Helpers\AssemblyListExtensions.cs:Zeile 14.
   bei System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   bei NServiceBus.Hosting.Profiles.ProfileManager..ctor(List`1 assembliesToScan
, IConfigureThisEndpoint specifier, String[] args, List`1 defaultProfiles) in c:
\TeamCity\buildAgent\work\28bfdd0d351fb1d3\src\NServiceBus.Core\Hosting\Profiles
\ProfileManager.cs:Zeile 33.
   bei NServiceBus.Hosting.GenericHost..ctor(IConfigureThisEndpoint specifier, S
tring[] args, List`1 defaultProfiles, String endpointName, IEnumerable`1 scannab
leAssembliesFullName) in c:\TeamCity\buildAgent\work\28bfdd0d351fb1d3\src\NServi
ceBus.Core\Hosting\GenericHost.cs:Zeile 173.
   bei NServiceBus.Hosting.Windows.WindowsHost..ctor(Type endpointType, String[]
 args, String endpointName, Boolean runOtherInstallers, IEnumerable`1 scannableA
ssembliesFullName) in c:\TeamCity\buildAgent\work\28bfdd0d351fb1d3\src\hosting\N
ServiceBus.Hosting.Windows\WindowsHost.cs:Zeile 29.
   bei NServiceBus.Hosting.Windows.HostServiceLocator.DoGetInstance(Type service
Type, String key) in c:\TeamCity\buildAgent\work\28bfdd0d351fb1d3\src\hosting\NS
erviceBus.Hosting.Windows\HostServiceLocator.cs:Zeile 34.
   bei Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Ty
pe serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\
Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:Zeile 49.
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Ty
pe serviceType, String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\
Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs:Zeile 57.
   bei Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TS
ervice](String key) in c:\Home\Chris\Projects\CommonServiceLocator\main\Microsof
t.Practices.ServiceLocation\ServiceLocatorImplBase.cs:Zeile 103.
   bei Topshelf.Internal.ServiceController`1.BuildInstance() in c:\Projects\TopS
helfForNSB\src\Topshelf\Internal\ServiceController.cs:Zeile 93.
   bei Magnum.StateMachine.EventActionList`1.Execute(T stateMachine, Event event
, Object parameter) in :Zeile 0.
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Magnum.StateMachine.ExceptionActionDictionary`1.HandleException(T stateMa
chine, Event event, Object parameter, Exception exception) in :Zeile 0.
   bei Magnum.StateMachine.EventActionList`1.Execute(T stateMachine, Event event
, Object parameter) in :Zeile 0.
   bei Magnum.StateMachine.State`1.RaiseEvent(T instance, BasicEvent`1 eevent, O
bject value) in :Zeile 0.
   bei Magnum.StateMachine.StateMachine`1.RaiseEvent(Event raised) in :Zeile 0.
   bei Topshelf.Internal.ServiceControllerProxy.Start()
   bei Topshelf.Internal.ServiceCoordinator.Start() in c:\Projects\TopShelfForNS
B\src\Topshelf\Internal\ServiceCoordinator.cs:Zeile 54.
   bei Topshelf.Internal.Hosts.ConsoleHost.Run() in c:\Projects\TopShelfForNSB\s
rc\Topshelf\Internal\Hosts\ConsoleHost.cs:Zeile 53.
   bei NServiceBus.Hosting.Windows.Program.Main(String[] args) in c:\TeamCity\bu
ildAgent\work\28bfdd0d351fb1d3\src\hosting\NServiceBus.Hosting.Windows\Program.c
s:Zeile 135.

编辑 我找到了解决方案!看我最后的评论!

4

1 回答 1

3

在 Console.Writeline 上放置一个断点并检查调试器中的内部异常属性 - 深入研究直到找到 ReflectionTypeLoadException 对象,然后检查 LoaderException 属性,该属性将告诉您哪些类型无法加载。

于 2013-06-04T15:26:04.703 回答