2011-03-23 4 views
1

리플렉션을 사용하여 컨테이너에 등록 할 유형 컬렉션을 선택합니다.IIS7 로딩 어셈블리가 없습니다

IIS 7.5 응용 프로그램 풀 재활용 또는 IISRESET 후에 모든 어셈블리를 리플렉션을 통해 선택할 수없는 문제가 있습니다.

bin 폴더를 통과하지 않고 각 DLL에 어셈블리로드를 수행하지 않고이 문제를 해결할 수있는 방법은 무엇입니까?

업데이트 :

내가로드 된 모든 어셈블리를 검색 할 수 AppDomain.Current.GetAssemblies()을 사용하고 있습니다.

+2

구성 파일의 섹션을 사용하여 어셈블리를 참조하는 방법이 있다고 생각합니다. 어셈블리가로드 될 수 있습니다. 나는 빠른 픽을 쳐다 보면서 정확히 내가 무엇을 찾고 있는지를 발견 할 수 없었지만, 아마도이 주석이 그러한 특징이 있다면 누군가의 기억을 조깅하는데 도움이 될 것이다. –

+2

컴파일을위한'assemblies' 엘리먼트는 http://msdn.microsoft.com/en-us/library/bfyb45k1.aspx에 리플렉션을 위해로드 될만큼 어셈블리가 알려짐으로써 약간의 효과가있을 수 있습니다. 나는 당신의 상황을 재현하고이 요소를 사용하려하지 않았습니다. –

답변

0

문제가 해결되었습니다.

AppDomain.CurrentDomain.GetAssemblies()를 사용하지 마십시오.

대신,

System.Web.Mvc.BuildManager.GetReferencedAssemblies() 

만 특질은() .GetReferencedAssemblies을 당신이 다음 작업 총회에 캐스팅해야하는 (개체로) 다시 ICollection은 전달 사용합니다.

귀하의 도움에 감사드립니다.

편집 - 신용 도미닉 Pettifer 간다 - "AppDomain.CurrentDomain.GetAssemblies()를 무장하고 매우 위험한 고려" http://www.dominicpettifer.co.uk/Blog/44/how-to-get-a-reference-to-all-assemblies-in-the--bin-folder?replyId=357

사실.

삼중 편집. AppDomain.CurrentDomain.GetReferencedAssemblies()가 아닙니다. System.Web.Mvc의 BuildManager 클래스를 사용하십시오.

+0

나는 당신이 그 링크를 보지 않은 것 같아요. 그들은 단계와 코드를 주었고 그것을하는 방법도 설명했습니다. – sikender

+0

링크가 작동하지 않습니다. 이것이 우리가 SO에있는 링크를 좋아하지 않는 이유입니다. – devshorts

+0

@devshorts BuildManager.GetReferencedAssemblies() 이상은 필요하지 않습니다. 정적 클래스의 정적 메서드입니다. 더 자세한 설명이 무엇인지 잘 모릅니다. –

관련 문제