2009-05-01 4 views
0

GAC에서 어셈블리를 가져 오는 여러 서비스가 있습니다. 이러한 서비스 중 하나를 설치하면 다양한 서비스에 의해 공유되는 새 어셈블리로 GAC를 업데이트하고 모든 이전 버전이 새 어셈블리를 찾도록 GAC에 새 정책 파일을 삽입합니다. 모든 서비스는 서비스를 다시 시작하지 않고 정책을 선택하고 새 어셈블리를 완벽하게 사용합니다. 문제 및 의문점은이 릴리스를 롤백하고 어셈블리 및 정책을 제거한 후 새 어셈블리 설치와 관련된 서비스를 다시 시작하는 경우입니다. 분명히 재시작 된 서비스는 GAC에서 이전 버전의 어셈블리를 선택합니다. 그러나이 어셈블리를 사용하는 서버에서 실행중인 다른 서비스는 여전히 정책 파일에서 어셈블리의 새 버전에 바인딩됩니다. 내 질문은 다음과 같습니다.CLR이 GAC에서 어셈블리 바인딩을 해제합니까?

바인딩은 결국 캐시를 바인딩하고 이전 어셈블리를 선택합니다. 또는 서비스가 다시 시작될 때까지 바인드 상태를 유지합니까?

다시 시작해야하는 경우이 어셈블리를 사용하는 모든 서비스를 찾아 서비스를 다시 시작하거나 서버 자체를 다시 시작하여 GAC에서 제거 된 어셈블리에 블라인드를 제거하는 것 외에는 다시 시작해야합니까?

답변

1

.NET 런타임은 응용 프로그램 도메인이 종료 될 때까지 (일반적으로 프로세스가 종료 될 때까지 하나의 프로세스에서 여러 응용 프로그램 도메인을 만들 수 있음) 어셈블리를 언로드하지 않습니다.

다른 서비스를 종료하고 정책 파일과 새 어셈블리를 제거한 다음 관련된 모든 서비스를 다시 시작해야한다고 생각합니다.

관련 문제