2017-10-24 1 views
0

다음 코드는 3.5.1404 버전에서 작동했지만 5.0.1 버전에서는 더 이상 작동하지 않습니다. NuGet을 통해 최신 참조 유무 : Web.config의에서Unity 용 XML 참조 매핑

을 나는이 :

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <assembly name="ACME.Core" /> 
    <namespace name="ACME.Core.DTO" /> 

    <container name="Default"> 
     <register type="IStatusRepository" mapTo="StatusRepository" /> 
     <register type="INoteRepository" mapTo="NoteRepository" /> 
    </container> 
</unity> 

오류 :

System.Configuration.ConfigurationErrorsException occurred HResult=0x80131902 Message=An error occurred creating the configuration section handler for unity: Could not load file or assembly 'Microsoft.Practices.Unity.Configuration' or one of its dependencies. The system cannot find the file specified. Source=Unity.Configuration StackTrace: at Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer container, String containerName)

at System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host, String typeString, Boolean throwOnError) at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.Init(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord) at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.InitWithRestrictedPermissions(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord) at System.Configuration.RuntimeConfigurationRecord.CreateSectionFactory(FactoryRecord factoryRecord) at System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere)

using Microsoft.Practices.Unity.Configuration; 
using Unity; 

namespace ACME.Core 
{ 
    public static class UnityCommon 
    { 
     static IUnityContainer _container; 

     /// <summary> 
     /// Returns the Common Unity Container from memory, reloads if not loaded first 
     /// </summary> 
     /// <param name="forceRefresh">Forces the container to be reloaded in memory</param> 
     /// <returns>IUnityContainer</returns> 
     public static IUnityContainer GetContainer(bool forceRefresh = false) 
     { 
      if (_container == null || forceRefresh) 
      { 
       _container = new UnityContainer(); 
       _container.LoadConfiguration("Default")); 
      } 

      return _container; 
     } 
    } 
} 

이 같은 Web.config의에서 XML 매핑을 참조

XML 구성을 다르게 호출해야합니까?

현재, _container.LoadConfiguration();으로 시도했습니다. 동일한 오류가 발생했습니다.

답변

3

Github (ENikS)의 기고가 도움을 얻어서 생각해 냈습니다.

내가 이전 네임 스페이스 문제에 사용되었다

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/> 
:

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> 

을하지만 그것이 일을 당신이 제공하는 새로운 하나를 사용하면