격리된 응용 프로그램 및 side-by-side 어셈블리 개념

업데이트: 2007년 11월

응용 프로그램의 모든 구성 요소가 side-by-side assemblies인 경우 해당 응용 프로그램은 isolated application으로 간주됩니다. side-by-side 어셈블리는 DLL 그룹, Windows 클래스, COM 서버, 형식 라이브러리 또는 인터페이스 같이 런타임에 실행할 응용 프로그램에 사용할 수 있는 리소스의 컬렉션입니다. 일반적으로 side-by-side 어셈블리는 여러 DLL 중 하나입니다. 예를 들어 C 런타임 라이브러리 어셈블리에는 msvcr90.dll, msvcm90.dll 및 msvcp90.dll이라는 세 개의 DLL이 포함되어 있고 이 어셈블리는 CRT 라이브러리의 함수를 사용하여 응용 프로그램을 빌드할 때 사용됩니다.

공유 또는 전용

side-by-side 어셈블리는 공유 또는 전용으로 설정할 수 있습니다. Shared side-by-side assemblies는 매니페스트에서 어셈블리에 대한 종속성을 지정하는 여러 응용 프로그램에 사용될 수 있습니다. 여러 버전의 side-by-side 어셈블리를 동시에 실행되는 서로 다른 응용 프로그램에서 공유할 수 있습니다. private assembly는 응용 프로그램과 함께 배포되고 해당 응용 프로그램에서만 단독으로 사용할 수 있는 어셈블리입니다. 전용 어셈블리는 응용 프로그램의 실행 파일이 포함된 폴더나 하위 폴더 중 하나에 설치됩니다.

매니페스트 및 검색 순서

isolated applicationsside-by-side assemblies에 대한 설명은 모두 manifests를 참조하십시오. 매니페스트는 응용 프로그램이나 어셈블리 안에 리소스로 포함되거나 외부 XML 파일로 제공되는 XML 문서입니다. 격리된 응용 프로그램의 매니페스트 파일은 런타임에 응용 프로그램을 바인딩해야 하는 공유 side-by-side 어셈블리의 이름과 버전을 관리하는 데 사용됩니다. side-by-side 어셈블리의 매니페스트는 side-by-side 어셈블리의 종속 어셈블리, 이름, 버전 및 리소스를 지정합니다. 공유 side-by-side 어셈블리의 경우 매니페스트는 WinSxS\Manifests 폴더에 설치됩니다. 전용 어셈블리의 경우 매니페스트는 ID가 1인 리소스로 DLL에 포함하는 것이 좋습니다. 전용 어셈블리의 이름은 DLL의 이름과 같을 수 있습니다. 자세한 내용은 Private Assemblies를 참조하십시오.

프로그램을 실행할 때 Windows에서는 응용 프로그램의 매니페스트에 있는 어셈블리 정보를 사용하여 필요한 side-by-side 어셈블리를 검색하고 로드합니다. 격리된 응용 프로그램에서 어셈블리 종속성을 지정하는 경우 운영 체제는 먼저 WinSxS 폴더의 공유 어셈블리 중에서 필요한 어셈블리를 검색합니다. 필요한 어셈블리를 찾지 못하면 운영 체제는 응용 프로그램의 디렉터리 구조에서 관련 폴더에 설치된 전용 어셈블리를 검색합니다. 자세한 내용은 Assembly Searching Sequence를 참조하십시오.

종속성 변경

응용 프로그램을 배포한 후 Publisher Configuration FilesApplication Configuration Files를 수정하여 side-by-side 어셈블리 종속성을 변경할 수 있습니다. 게시자 정책 파일이라고도 하는 게시자 구성 파일은 side-by-side 어셈블리의 현재 사용 중인 버전에서 동일한 어셈블리의 다른 버전으로 응용 프로그램과 어셈블리를 전체 리디렉션하는 XML 파일입니다. 예를 들어, 특정 side-by-side 어셈블리에 대한 호환 문제 수정 또는 보안 수정 파일을 배포하고 이 어셈블리의 게시자가 어셈블리의 새 버전을 사용하도록 응용 프로그램 전체를 리디렉션하려는 경우 종속성 변경을 수행할 수 있습니다. 응용 프로그램 구성 파일은 side-by-side 어셈블리의 현재 사용 중인 버전에서 동일한 어셈블리의 다른 버전으로 특정 응용 프로그램을 리디렉션하는 XML 파일입니다. 이 구성 파일은 전역 게시자 구성 파일에 정의되어 있는 것과 다른 버전의 side-by-side 어셈블리를 사용하도록 특정 응용 프로그램을 리디렉션할 때 사용할 수 있습니다. 자세한 내용은 Configuration을 참조하십시오.

Visual C++ 라이브러리

Visual C++ 2005에서 ATL, MFC, CRT, 표준 C++, OpenMP 및 MSDIA 등과 같은 라이브러리는 네이티브 어셈블리 캐시에 공유 side-by-side 어셈블리로 배포됩니다. 기본적으로 Visual C++ 2005를 사용하여 빌드한 응용 프로그램은 모두 최종 이진 파일에 포함된 매니페스트와 함께 빌드됩니다. 이 매니페스트는 Visual C++ 라이브러리에 대한 이 이진 파일의 종속성을 설명합니다. Visual C++ 응용 프로그램에 대한 매니페스트 생성과 관련된 자세한 내용은 C/C++ 프로그램의 매니페스트 생성 이해를 참조하십시오.

참고 항목

기타 리소스

C/C++ 격리된 응용 프로그램 및 side-by-side 어셈블리 빌드