2014-10-07 3 views
0

구성에서 autofac으로 어셈블리를 등록합니다. 'bin'폴더가 아닌 다른 폴더에서 autofac로드 어셈블리를 원합니다.Autofac - 특정 폴더의 구성으로 어셈블리 등록

<component type="Amazon.SQS.AmazonSQSClient, amazonDlls/AWSSDK" service="Amazon.SQS.IAmazonSQS, AWSSDK" /> 

하지만 잘못된 어셈블리 이름의 오류 : 나는 그것을 '유형'과 같은 asssembly의 경로 속성 넣어 시도

.

어떻게하면됩니까? 특정 폴더에서 어셈블리를 등록 할 수 있습니까?

: 나는 코드에서 가능하지만 config에서 원한다는 것을 알고 있습니다.

답변

0

the documentation에 표시된대로 구성 요소 유형의 이름은 fully-qualified type names이며 .NET 사양에 정의 된 형식입니다. 정규화 된 형식 이름에는 경로가 포함되지 않습니다.

기본 제공 구성 형식에서는 경로를 지정할 수 없습니다. 몇 가지 옵션이 있습니다.

옵션 1 : 추가 프로빙 경로 기본적으로

는 .NET은 어셈블리에 대한 응용 프로그램의 bin 폴더를 검색합니다. 당신은 당신이 app.config 또는 web.config를 통해 검색 할 추가 경로를 지정할 수 있습니다 않습니다에 대한 how .NET locates assemblies on MSDN

.NET을 읽을 수 있습니다

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin;bin\plugins" /> 
    </assemblyBinding> 
    </runtime> 
<configuration> 

These paths must be subdirectories of the bin folder

은 그래서 당신을 위해 작동하지 않을 수 있습니다.

bin 폴더 외부에 있어야하고 하위 디렉토리에 있지 않은 경우 you can use the <codeBase> element to specify a URL location이어야합니다. 그렇게한다면 어셈블리에 강력한 이름이 있어야하는 것처럼 보입니다. 따라서 명심하십시오. probingPath 메커니즘에는 강력한 이름이 필요하지 않습니다.

물론 GAC 외부의 지정된 위치에 있고 bin 폴더 외부에있는 어셈블리를로드 할 경우 위험이 있습니다. 고려할 재료.

옵션 2 : 만들기 자신의 구성 리더이 많이 힘들어합니다

. grab the Autofac.Configuration source을 사용하고 파일 위치 지원을 포함하는 구성 판독기의 고유 한 버전을 만들 수 있습니다. 작동 시키려면 아마도 Assembly.LoadFrom을 봐야 할 것입니다 만, 다시 한 번 그런 위험이 있습니다. Assembly.LoadFrom docs에서 문제를 간략하게 설명합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 첫 번째 옵션을 시도하지만 여전히 동일한 오류가 발생합니다. '유형'x, x '을 (를) 찾을 수 없습니다. 어셈블리 자격이 필요할 수 있습니다.\ "MyType, MyAssembly \" ' – Shira

+0

구성을 변경 했습니까? 어셈블리 정규화 된 형식 이름에는 슬래시가 없지만 예제 구성 요소 유형에는 슬래시가 없습니다. .NET 형식으로 확인하려면 형식 이름을 수정하십시오. 내 대답에있는 문서 링크를 참조하십시오. 설정을 변경 한 경우 질문을 업데이트 할 수 있습니까? –

0

정규화 된 형식 이름의 어셈블리 경로를 제공 할 수 없습니다. "bin"폴더가 아닌 다른 디렉토리에있는 라이브러리에서 유형을 등록하는 것도 불가능합니다. 당신은 당신이 등록하고 이런 식으로 읽고 싶은 DLL과 같은 폴더에 구성 파일을 준비하더라도 :

builder.RegisterModule(new ConfigurationSettinsgReader("<section-name>", "amazonDlls/app.config")); 

당신은 유형의 예외없는 발견을 얻을 것이다.