2010-05-22 3 views
1

디스크에서 어셈블리를로드하고 파일을 디스크에 잠그지 않고 코드를 실행하는 방법이 있습니까? 코드가 RAM에로드되고 JIT로 컴파일되므로 파일을 잠그는 것이 왜 필요한지 전혀 이해하지 못했습니다.파일을 잠그지 않고 어셈블리에서 코드를로드하고 실행 하시겠습니까?

+0

프로세스에서 사용하는 파일 기반 리소스를 잠글 수있는 표준 OS 기능입니다. – Pierreten

+1

@Pierreten : 유닉스에서는 공유 라이브러리가 사용 중일 때 링크를 해제하고 바꿀 수 있습니다. 기존 프로세스에는 열린 파일 핸들이 있기 때문에 원래 .so 파일을 사용하는 모든 프로세스가 종결 될 때까지 기본 inode는 수확되지 않습니다. –

답변

2

Assembly.Load(byte[])을 사용하여 어셈블리를로드 할 수도 있습니다. 이 어셈블리에는 "로딩 컨텍스트"가 없으므로 반복해서로드 할 수 있습니다. 그러나 이것을 관리하는 것은 쉽지 않습니다.

3

당신이 찾고있는 것을 쉐도우 복사라고합니다. 새 AppDomain을 만들고 ShadowCopyFiles 속성이 true으로 설정된 AppDomainSetup 인스턴스를 제공해야합니다.

이 응용 프로그램 도메인은 어셈블리를로드하기 전에 어셈블리를 임시 위치로 복사합니다. 자세한 내용은 MSDN을 참조하십시오.

관련 문제