2014-09-21 22 views
0

当我启动应用程序时,有时(通常是编译后第一次),显示以下错误。
重新启动应用程序可以最多次解决问题。
如何找出根本原因?在应用程序启动时断言失败:ReflectionTypeLoad_LoadFailed

除了错误消息和堆栈跟踪,我没有其他有关原因的信息。
Visual Studio告诉我调试的源信息不可用。
从线程信息窗口我看不到主线程在Catel.Reflection.ReflectionExtensions.GetTypesEx()。

ApplicationName.vshost.exe - 断言失败
表达: [mscorlib程序递归资源查找错误]
说明:mscorlib程序内资源查找过程中无限递归。
这可能是mscorlib中的一个错误,或者可能存在于某些可扩展性点(例如程序集解析事件或CultureInfo名称)中。
资源名称: ReflectionTypeLoad_LoadFailed

完整的堆栈跟踪可用in my onedrive
以下是第几行:

Stack Trace: 
at System.Environment.ResourceHelper.GetResourceStringCode(Object userDataln) 
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) 
at System.Environment.ResourceHelper.GetResourceString(String key, CultureInfo culture) 
at System.Environment.ResourceHelper.GetResourceString(String key) 
at System.Environment.GetResourceStringLocal(String key) 
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) 
at System.Reflection.RuntimeModule.GetTypes() 
at System.ReflectionAssembly.GetTypes() 
at Catel.Reflection.ReflectionExtensions.GetTypesEx(Assembly assembly) in c:\CIWSMA1596\Source\Catel\sraCatel.Core\Catel.CoreShareaReflection\Extensions\ReflectionExtensions.assembly.cs:line 33 
at Catel.Reflection.AssemblyHelper.GetAllTypesSafely(Assembly assembly, Boolean logLoaderExceptions) in cACI_WS\WA1596\Source\Catel sraCatel.Core\Catel.Core.ShareaReflection\Helpers `, AssemblyHelper.cs:line 192 
at Catel.Reflection.TypeCachelnitializeAssemblies(lEnumerablel assemblies) in cACI_WSWW\1596\Source\Catel\src\Catel.CoreKatel.Core.ShareaReflection\TypeCache.cs:line 583 
at Catel.Reflection.TypeCachelnitializeTypes(Boolean forceFulllnitialization, Assembly assembly) in cACI_WSNWs\1596\Source\cateNsraCatel.Core\Catel.Core.ShareaReflection\TypeCache.cs:line 553 
at Catel.Reflection.TypeCache.OnAssemblyLoaded(Object sender, AssemblyLoadEventArgs args) in c:\CI_WSNWs\1596\SourceKateNsraCatel.Core\Catel.Core.ShareaReflection\TypeCache.cs:line 131 
at System.AssemblyLoadEventHandlerinvoke(Object sender, AssemblyLoadEventArgs args) 
at SystemAppDomain.OnAssemblyLoadEvent(RuntimeAssembly LoadedAssembly) 
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) 
at System.Reflection.RuntimeModule.GetTypes() 
at System.Reflection.Assembly.GetTypes() 
at Catel.Reflection.ReflectionExtensions.GetTypesEx(Assembly assembly) in c:\CIWS\Ws\1596\Source\Catel\src\Catel.Core\Catel.Core.Shared\Reflection\Extensions\ReflectionExtensions.assembly.cs:line 33 
at Catel.ReflectionAssemblyHelper.GetAllTypesSafely(Assembly assembly, Boolean logLoaderExceptions) in c:\CI_WSNWs\1596\Source\catel\sraCatel.Core\Catel.Core.ShareaReflection\Helpers‘AssemblyHelper.cs:line 192 
at Catel.Reflection.TypeCachelnitializeAssemblies(lEnumerablel assemblies) in cACI_WSNWs\1596\SourceKatel\src\Catel.Core\Catel.Core.ShareaReflection TypeCache.cs:line 583 
at Catel.Reflection.TypeCachelnitializeTypes(Boolean forceFulllnitialization, Assembly assembly) in c:\CIWS\Ws\1596\Source\Catel\sraCatel.Core\Catel.Core.ShareaReflection\TypeCache.cs:line 553 
at Catel.Reflection.TypeCache.OnAssemblyLoaded(Object sender, AssemblyLoadEventArgs args) in c:\CI__WS\WA1596\Source\Catel\sraCatel.Core\Catel.Core.ShareaReflection\TypeCache.cs:line 131 
at System.AssemblyLoadEventHandlerinvoke(Object sender, AssemblyLoadEventArgs args) 
at System.AppDomain.OnAssemblyLoadEvent(RuntimeAssembly LoadedAssembly) 
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) 
at System.Reflection.RuntimeModule.GetTypes() 
at System.Reflection.Assembly.GetTypes() 
at Catel.Reflection.ReflectionExtensions.GetTypesEx(Assembly assembly) in c: CIWSNWs\1596\Source\Catel\src Catel.Core\Catel.Core.ShareaReflection Extensions\ReflectionExtensions.assembly.cs:line 33 
at Catel.Reflection.AssemblyHelper.GetAllTypesSafely(Assembly assembly, Boolean logLoaderExceptions) in c:\CI_WSNWs\1596\Source\Catel sraCatel.Core\Catel.Core.ShareaReflection\Helpers\AssemblyHelper.cs:line 192 
at Catel.Reflection.TypeCacheinitializeAssemblies(lEnumerablel assemblies) in cACI_WS\WA1596\Source\Catel\src\Catel.CoreKatel.Core.ShareaReflection\TypeCache.cs:line 583 
at Catel.Reflection.TypeCacheinitializeTypes(Boolean forceFulllnitialization, Assembly assembly) in cACIWS\WA1596\Source\Catel\sraCatel.Core\Catel.Core.ShareaReflection‘TypeCache.cs:line 553 
at Catel.Reflection.TypeCache.OnAssemblyLoaded(Object sender, AssemblyLoadEventArgs args) in c:\CI__WS\Ws\1596\Source\Catel\sraCatel.Core\Catel.Core.ShareaReflection‘TypeCache.cs:line 131 
at System.AssemblyLoadEventHandlerinvoke(Object sender, AssemblyLoadEventArgs args) 
at System.AppDomain.OnAssemblyLoadEvent(RuntimeAssembly LoadedAssembly) 

回答

0

在Catel的AssemblyHelper创建一个缓存,使反射尽可能快。这意味着它有时会尝试加载无法加载的类型/程序集,但这些是第一次机会异常,因此可以安全地忽略。

+0

不幸的是我没有机会忽略这个例外。它显示在与其他例外截然不同的模式弹出对话框中。甚至没有显示具体的异常类型。那么我该如何以及在哪里可以忽略它?不管怎样,不应该这样做吗? – 2014-09-22 09:10:57

+0

请在官方问题跟踪器中提供repro,请参阅http://www.catelproject.com/support/issue-tracker – 2014-09-22 10:03:48