Throw more informative exception when a type cannot be loaded
description
<p>The FileLoadException currently thrown when there is an invalid unity configuration for a type doesn't provide any information about which part of the configuration is wrong.</p>
<p> </p>
<p>[FileLoadException: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)]</p>
<p> System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0</p>
<p> System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName) +95</p>
<p> System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +54</p>
<p> System.Type.GetType(String typeName) +50</p>
<p> Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.SearchAssemblies(String typeNameOrAlias) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:256</p>
<p> Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveTypeThroughSearch(String typeNameOrAlias) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:192</p>
<p> Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveTypeInternal(String typeNameOrAlias) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:119</p>
<p> Microsoft.Practices.Unity.Configuration.ConfigurationHelpers.TypeResolverImpl.ResolveType(String typeNameOrAlias, Boolean throwIfResolveFails) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ConfigurationHelpers\TypeResolverImpl.cs:105</p>
<p> Microsoft.Practices.Unity.Configuration.RegisterElement.GetRegisteringType() in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\RegisterElement.cs:119</p>
<p> Microsoft.Practices.Unity.Configuration.RegisterElement.ConfigureContainer(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\RegisterElement.cs:0</p>
<p> Microsoft.Practices.Unity.Configuration.<>c__DisplayClass1.<ConfigureContainer>b__0(ContainerConfiguringElement element) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:114</p>
<p> Microsoft.Practices.ObjectBuilder2.EnumerableExtensions.ForEach(IEnumerable`1 sequence, Action`1 action) +135</p>
<p> Microsoft.Practices.Unity.Configuration.ContainerElement.ConfigureContainer(IUnityContainer container) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\ContainerElement.cs:110</p>
<p> Microsoft.Practices.Unity.Configuration.UnityConfigurationSection.Configure(IUnityContainer container, String configuredContainerName) in e:\Builds\Unity\UnityTemp\Compile\Unity\Unity.Configuration\Src\UnityConfigurationSection.cs:151</p>
<p> Neovolve.Toolkit.Unity.UnityContainerResolver.Resolve(IConfigurationStore configuration, String unitySectionName, String containerName) in D:\Codeplex\Neovolve\Neovolve.Toolkit\Neovolve.Toolkit.Unity\UnityContainerResolver.cs:94</p>
<p> Neovolve.Toolkit.Unity.UnityContainerResolver.Resolve() in D:\Codeplex\Neovolve\Neovolve.Toolkit\Neovolve.Toolkit.Unity\UnityContainerResolver.cs:26</p>
<p> Neovolve.Toolkit.Unity.UnityHttpModuleBase.AssignContainer(Func`1 getContainer, Boolean allowContainerReassignment) in D:\Codeplex\Neovolve\Neovolve.Toolkit\Neovolve.Toolkit.Unity\UnityHttpModuleBase.cs:73</p>
<p> Neovolve.Toolkit.Unity.UnityHttpModuleBase.Init(HttpApplication context) in D:\Codeplex\Neovolve\Neovolve.Toolkit\Neovolve.Toolkit.Unity\UnityHttpModuleBase.cs:43</p>
<p> Neovolve.Toolkit.Unity.UnityHttpModule.Init(HttpApplication context) in D:\Codeplex\Neovolve\Neovolve.Toolkit\Neovolve.Toolkit.Unity\UnityHttpModule.cs:126</p>
<p> System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +431</p>
<p> System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194</p>
<p> System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339</p>
<p> System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253</p>
<p> </p>
<p>[HttpException (0x80004005): The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)]</p>
<p> System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8946484</p>
<p> System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97</p>
<p> System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256</p>
<p> </p>
<p>Unity has progressed well in this area such as when a build up fails. The exception in such a circumstance tells you exactly what happened and where in the build up operation the failure was encountered. </p>
<p> </p>
<p>The above exception is unfortunately completely unhelpful. Please update type resolution support to include the resolution attempt information when a type fails to load.</p>