2011-06-12 2 views
1

플러그인 기반 ASP.NET 응용 프로그램에서 MEF을 사용하고 있습니다. File System WatcherContainer.Refresh()으로 연결하면 새 플러그인이 플러그인 폴더에 복사 될 때 자동으로로드됩니다.ASP.NET에서 플러그인 폴더 작성 가능

문제는로드 된 플러그인을 삭제하거나 교체하려고 할 때입니다. w3wp에 의해 잠겨 지므로 삭제할 수 없습니다. Shadow Copy에 대해 읽었지만 좋은 예제 나 기사를 찾을 수 없습니다.

답변

1

AppDomainSetup.ShadowCopyDirectories에 플러그인 폴더를 추가해보세요. 이 속성은 섀도 복사본을 통해로드해야하는 어셈블리가 들어있는 세미콜론으로 구분 된 디렉터리 목록입니다.

일반적으로 AppDomainSetup.ShadowCopyFiles에서 "true"으로 설정해야하지만이 설정은 이미 ASP.NET appdomains의 기본값이라고 생각합니다.

그러나 새 버전의 플러그인을로드해도 마술처럼 이전 버전이 언로드되지는 않습니다. 이를 수행하는 유일한 방법은 AppDomain을 포함하는 AppDomain을 언로드하는 것입니다. 이 때문에 별도의 appdomain에 플러그인을로드해야합니다, 이것은 아마 가치보다 더 많은 문제입니다.

서비스를 중지하고 DLL을 업데이트 한 다음 다시 시작하는 것이 더 간단하고 안전하며 효과적 일 수 있습니다.