Unity3和错误“无法解析类型名称或别名“xxxxx”。请检查您的配置文件并验证此类型名称。”有没有办法用Unity3解决这个问题?我已尽一切可能绕过此消息错误,但我无法解决;我已经完成了我在谷歌搜索中看到的一切。我几乎放弃并尝试了另一种DI解决方案。我的配置文件:我的界面:使用Biblioteca.Transport;使用System.Linq;命名空间Biblioteca.Contracts{公共接口IManterCategoriaBO{IQueryableGetAll();CategoriaDTOGetById(intid);无效插入(CategoriaDTOdto);我的具体课程:usingBiblioteca.Contracts;使用Biblioteca.Transport;使用Biblioteca.Data;使用系统;使用System.Linq;命名空间Biblioteca.Business{publicclassManterCategoriaBO:IManterCategoriaBO{publicCategoriaDTOGetById(intid){CategoriaDTOdto=newCategoriaDTO();ManterCategoriaDO类别DO=newManterCategoriaDO();dto=categoriaDO.GetById(1);返回数据;}publicIQueryableGetAll(){thrownewNotImplementedException();}publicvoidInsert(CategoriaDTOdto){thrownewNotImplementedException();}}}我的Global.asax:使用System.Web.Http;使用System.Web.Mvc;使用System.Web.Optimization;使用System.Web.Routing;使用Biblioteca.Dependency;namespaceBiblioteca{//注意:对于i有关启用IIS6或IIS7经典模式的说明,//访问http://go.microsoft.com/?LinkId=9394801publicclassMvcApplication:System.Web.HttpApplication{protectedvoidApplication_Start(){AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);//下面是一个静态变量来获取统一容器//这是一个依赖项目Global.Container=Bootstrapper.Initialise();我的引导程序类:使用Microsoft.Practices.Unity;使用Microsoft.Practices.Unity.Configuration;使用系统配置;使用System.Web.Mvc;使用Unity.Mvc4;namespaceBiblioteca{publicstaticclassBootstrapper{publicstaticIUnityContainerInitialise(){varcontainer=BuildUnityContainer();DependencyResolver.SetResolver(新UnityDependencyResolver(容器));返回容器;}privatestaticIUnityContainerBuildUnityContainer(){stringpath=ConfigurationManager.AppSettings["UnityConfigFilePath"].ToString();varfileMap=newExeConfigurationFileMap(){ExeConfigFilename=path+"\Unity.config"};System.Configuration.Configuration配置=ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);varunitySection=(UnityConfigurationSection)configuration.GetSection("unity");//***这一行引发了错误!!!****varcontainer=newUnityContainer().LoadConfiguration(unitySection);返回容器;我的依赖项目静态类:使用Microsoft.Practices.Unity;命名空间Biblioteca.Dependency{publicstaticclassGlobal{publicstaticIUnityContainerContainer=null;publicstaticTResolve(){returnContainer.Resolve();我在MVC4项目上的UI模型类文件我正在使用4.5框架。使用Biblioteca.Contracts;使用Biblioteca.Dependency;namespaceBiblioteca.Models{publicclassLivroModel{publicvoidGetAll(){if(Global.Container!=null){varcategoryBO=Global.Resolve();类别BO.GetById(1);}}}}我认为一切都是正确的。但是,我看不到这个DI工作,因为我在映射过程中遇到错误,在我的Bootstrapper类中,BuildUnityContainer方法位于以下行:varcontainer=newUnityContainer()。加载配置(unitySection);错误是:无法解析类型名称或别名Biblioteca.Contracts.IManterCategoriaBO。请检查您的配置文件并验证此类型名称。我已经仔细检查了所有课程,对我来说他们没问题。还是缺少什??么?问题出在配置文件上。您正在使用一些不正确的语法混合两个概念。当节点包含它自己无法找到的类型时,节点会提供程序集和命名空间搜索顺序。如果找不到类型,它会搜索[namespace].Type,[assembly]的所有组合。这是错误的地方:它不搜索Type,[assembly]。如果定义了任何节点,则不会尝试仅附加程序集。所以你的节点是Biblioteca.Contracts.IManterCategoriaBO类型的,不包含程序集,所以找不到。因此,需要对其进行搜索。您确实指定了一个节点,因此它将首先尝试Biblioteca.Biblioteca.Contracts.IManterCategoriaBO,Biblioteca。请注意重复的Biblioteca名称。这是一个更正的配置文件。-->没有人说的一点信息是我需要引用所有在unity中使用的项目。因此,在我的解决方案中,在我的BibliotecaWeb项目中,有必要引用Biblioteca.Business和Biblioteca.Contracts以便能够通过统一注册而不会出现任何错误。我只引用了最后一个。这太不可思议了,但这是我的问题!!!我认为unity能够对unity.config文件中包含的所有路径进行某种反射。但是我错了。要使Unity正常工作,必须引用unity.config文件中的所有项目。如果我指向某个命名空间,我需要引用相关的项目。我已经解决了这个问题,但我不同意这种使统一工作的方法。但无论如何,它现在正在工作!谢谢泰勒的支持。如前一条评论所述,您可以在调用UnityContainer.LoadConfiguration(...)之前自行执行反射程序集加载。这是一个通用的方法。只需确保可以通过名称找到您的程序集。这可以通过将程序集放在应用程序的bin目录中来完成。或者将路径添加到您的应用程序配置。或者将它们添加到全局程序集缓存(GAC),但我不建议这样做。privatestaticvoidLoadDependencyAssemblies(){UnityConfigurationSectionsection=ConfigurationManager.GetSection(UnityConfigurationSection.SectionName)asUnityConfigurationSection;if(section==null){thrownewConfigurationErrorsException("UnabletolocateUnityconfigurationembringingsection.SectionName"forstring};section.Assemblies.Select(element=>element.Name)){try{Assembly.Load(assemblyName);}catch(Exceptionex){thrownewConfigurationErrorsException("无法加载Unity配置部分中指定的所需程序集。程序集:"+assembly,ex);我也收到了这个错误消息,但发现了另一组原因:我使用的是WiX安装程序,它没有正确部署目标程序集所需的一些dll(在这个例子中,它将是Biblioteca的依赖项。商业)。所以仔细检查。然后我在发布模式下运行时收到错误消息,调试模式工作正常。结果是目标mapTo类没有标有“public”属性。出于某种原因,这在调试模式下无关紧要,但在发布模式下是一个障碍。希望对某人有所帮助,因为它已经阻止了我两天。我只是花了很多时间试图弄清楚这个错误。在我的例子中,配置没有错误,但事实证明,其中一个包含具体类型的程序集依赖于它找不到的另一个程序集。不幸的是,Unity没有暗示加载程序集的任何问题。事实上,该程序集显示在VisualStudio调试器的“模块”窗口中。仍然无法加载类型。如果您来自谷歌,最简单的方法是删除并执行以下操作。...MyApp是ProjectProperties->Application中的程序集名称。以上是C#学习教程:Unity3报错“Thetypenameoralias'xxxxx'cannotberesolved.Pleasecheckyourconfigurationfileandverifythistypename.”分享的全部内容,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
