2012-05-31 3 views
0

여러분 모두 좋은 기분을 빌어! 화합으로 도와주세요.대체 파일 및 섹션 확장에서 유니티, LoadConfiguration

내 app.config 파일이 포함되어

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 
    </configSections> 
    <system.diagnostics> 
    <sources> 
     <source name="TraceTest" switchName="SourceSwitch" 
     switchType="System.Diagnostics.SourceSwitch" > 
     <listeners> 
      <add name="console" /> 
      <remove name ="Default" /> 
     </listeners> 
     </source> 
    </sources> 
    <switches> 
     <add name="SourceSwitch" value="All" /> 
    </switches> 
    <sharedListeners> 
     <add name="console" 
     type="System.Diagnostics.ConsoleTraceListener" 
     initializeData="false"/> 
    </sharedListeners> 
    <trace autoflush="true" indentsize="4"> 
     <listeners> 
     <add name="console" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <assembly name="ContextDownloader"/> 
    <namespace name="ContextDownloader.Log"/> 
    <namespace name="System.Diagnostics"/> 
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, 
Microsoft.Practices.Unity.Interception.Configuration"/> 
    <container> 
     <extension type="Interception"/> 
     <register type="ILogWorker" mapTo="FileLogWorker"> 
     <interceptor type="InterfaceInterceptor"/> 
     <interceptionBehavior type="TraceBehavior"/> 
     </register> 
     <register type="TraceSource" name="interception"> 
     <constructor> 
      <param name="name" type="System.String" value="TraceTest" /> 
     </constructor> 
     </register> 
     <register type="TraceBehavior"> 
     <constructor> 
      <param name="source" dependencyName="interception" /> 
     </constructor> 
     </register> 
    </container> 
    </unity> 
</configuration> 

내가 내 코드에서의 App.config에서 구성을로드 :

var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "App.config" }; 
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 
var unitySection = (UnityConfigurationSection)configuration.GetSection("unity"); 
var container = new UnityContainer(); 

그래서 그것은 예외

처리되지 않은 예외가 발생합니다 : 시스템 .Configuration.ConfigurationErrorsException : unity에 대한 구성 섹션 처리기를 만드는 동안 오류가 발생했습니다. 형식 이름 또는 별칭 Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigu rationExtension, Microsoft.Practices.Unity.Interception.Configuration을 (를) 확인할 수 없습니다. 구성 파일을 확인하고이 유형 이름을 확인하십시오.

라인 var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");. Microsoft.Practices.Unity.Interception.Configuration 어셈블리를 어떻게로드 할 수 있습니까?

응용 프로그램에 대한 자세한 내용. 나는 콘솔 어플리케이션과 라이브러리를 가지고있다. 내 콘솔 응용 프로그램에서 하나의 메서드를 호출하면 모든 논리가 라이브러리에 있습니다.

출력 라이브러리에이 Microsoft.Practices.Unity.InterceptionExtension.Configuration.dll을 복사 해 주셔서 감사합니다. system.diagnostic 섹션도로드 할 수 있습니까?

답변

1

Microsoft.Practices.Unity.Interception.dllMicrosoft.Practices.Unity.Interception.Configuration.dll이 앱 기본 폴더에 있거나 GAC에 등록되어 있는지 확인 했습니까?

App.config 파일의 이름이 App.config이고 컴파일 후 이름이 변경되지 않았는지 확인 했습니까? MyApp.Foo.dll.config?

전체 구성 파일을 게시 해주십시오. 위의 스 니펫은 내 컴퓨터에서 완벽하게 작동하므로 누락 된 것이있는 것 같습니다.

는 Btw는 : 기본값을 사용하려면 App.config 또는 Web.config 어쨌든 당신은 ExeConfigurationFileMap 놓을 수 있습니다 직접 전화 ConfigurationManager.GetSection("unity")


업데이트 그래서

당신은 콘솔이 아닌 응용 프로그램이 응용 프로그램 (예 : WinForms 또는 WPF)에서 추적 출력을 콘솔에 작성 하시겠습니까? 그렇다면 this article 일 수 있습니다. 관리되는 코드에서 원시 Win32 호출을 사용하여 콘솔 창을 할당하는 방법을 보여줍니다.

라이브러리와 함께 번들로 제공되며 응용 프로그램의 구성 파일과 독립적 인 구성 파일을 사용하려는 경우 여기 StackOverflow에서 this article이 중요 할 수 있습니다.

+0

고마워요! 출력 폴더에 Microsoft.Practices.Unity.Interception.Configuration.dll을 추가하기 만하면됩니다. 그러나 하나 더, 당신은 section system.diagnostic으로 나를 도울 수 있습니까? 애플리케이션에이 섹션을 어떻게로드 할 수 있습니까? 감사! – Udgin

+0

@ user1337137 나는 당신이 달성하고자하는 것을 100 % 확신하지 못했습니다. 'Trace.WriteLine (...을 호출하면)'ConsoleTraceListener는 모든 메시지를 수신해야합니다. 'TraceSource'로 무엇을하고 싶습니까? –

+0

OK, 죄송합니다. 구성 파일 (App.config)에서 "system.diagnostics"설정을 사용하고 싶습니다. 내 라이브러리 (콘솔 응용 프로그램 아님)의 구성 파일입니다. 나는 그것이 불가능하다고 생각한다. 미리 감사드립니다! 귀하의 도움은 매우 유용합니다! – Udgin