데이터베이스의 미리 컴파일 된 코드에서 직접 작성되는 .NET 어셈블리 DLL이 있습니다. DLL 파일을 만들고, 데이터를 넣고, Assembly
클래스로로드 한 다음 프로세스가 종료되면 해당 DLL을 삭제할 수 있습니까?소유자 프로세스가 종료 될 때 DLL을 삭제할 수있는 방법은 무엇입니까?
첫 번째 생각은 FILE_SHARE_DELETE
플래그로 열어서 Assembly.LoadFrom,
으로로드하고 자동으로 삭제하도록했습니다.
LoadLibrary는 FILE_SHARE_DELETE
플래그로 파일을 열지 만 DLL이 여전히 메모리에 매핑되어 있으면 OS가 파일을 삭제하지 않습니다.
AppDomains
을 사용하지 않고 프로세스가 종료되거나 외부에서 "대상 프로세스가 종료 된 후이 파일 삭제"실행 파일 (런타임시로드되는 .NET DLL은 사용자 입력에 따라 다름)을 제거하면 DLL을 어떻게 삭제할 수 있습니까? 어떤 종류의 프로세스 커뮤니케이션이 필요합니다. 나는 이것을 피하고 싶습니다). 당신이 어셈블리 &가 저장 컴파일되는 위치를 추적 할 경우