다음을 통해 공유


Side-by-Side 실행용 응용 프로그램 및 구성 요소를 만드는 방법

업데이트: 2007년 11월

다음의 일반 지침에 따라 side-by-side 실행용으로 설계된 관리되는 응용 프로그램 또는 구성 요소를 만들 수 있습니다.

  • 형식 ID를 특정 버전의 파일에 바인딩합니다.

    공용 언어 런타임은 강력한 이름의 어셈블리를 사용하여 형식 ID를 특정 파일 버전에 바인딩합니다. side-by-side 실행용 응용 프로그램 또는 구성 요소를 만들려면 모든 어셈블리에 강력한 이름을 지정해야 합니다. 이렇게 하면 정확한 형식 ID가 만들어지며 형식 확인을 통해 올바른 파일을 사용할 수 있게 됩니다. 강력한 이름의 어셈블리에는 바인딩 요청을 이행하기 위해 런타임이 올바른 파일을 찾는 데 사용하는 버전, 문화권 및 게시자 정보가 포함됩니다.

  • 버전 인식 저장소를 사용합니다.

    런타임은 전역 어셈블리 캐시를 사용하여 버전 인식 저장소를 제공합니다. 전역 어셈블리 캐시는 .NET Framework를 사용하는 모든 컴퓨터에 설치되어 있는 버전 인식 디렉터리 구조입니다. 전역 어셈블리 캐시에 설치된 어셈블리는 해당 어셈블리의 새 버전이 설치되어도 덮어쓰여지지 않습니다.

  • 격리 상태에서 실행되는 응용 프로그램이나 구성 요소를 만듭니다.

    격리 상태에서 실행되는 응용 프로그램이나 구성 요소는 응용 프로그램이나 구성 요소의 두 인스턴스가 동시에 실행될 때 충돌을 일으키지 않도록 리소스를 관리해야 합니다. 또한 응용 프로그램이나 구성 요소는 버전별 파일 구조를 사용해야 합니다.

응용 프로그램 및 구성 요소 격리

side-by-side 실행용 응용 프로그램이나 구성 요소를 성공적으로 설계하는 한 가지 핵심 요인은 격리입니다. 응용 프로그램이나 구성 요소는 모든 리소스, 특히 파일 I/O를 격리된 방식으로 관리해야 합니다. 다음 지시에 따라 응용 프로그램이나 구성 요소를 격리된 상태에서 실행되게 할 수 있습니다.

  • 버전별 방식으로 레지스트리에 항목을 기록합니다. 버전을 나타내는 값을 하이브나 키에 저장하고 구성 요소 버전 간에 정보나 상태를 공유하지 않습니다. 이렇게 하면 동시에 실행되는 두 개의 응용 프로그램이나 구성 요소가 정보를 덮어쓸 수 없게 됩니다.

  • 경쟁 조건이 발생되지 않도록 명명된 커널 개체를 버전별 개체로 만듭니다. 예를 들어, 동일한 응용 프로그램의 두 버전에 있는 두 세마포가 서로 대기할 때 경쟁 조건이 발생합니다.

  • 버전을 인식할 수 있게 파일 및 디렉터리 이름을 지정합니다. 즉, 파일 구조는 버전 정보에 따라 달라질 수 있습니다.

  • 버전별 방식으로 사용자 계정과 그룹을 만듭니다. 응용 프로그램에서 만드는 사용자 계정 및 그룹은 버전에 따라 식별되어야 합니다. 응용 프로그램 버전 간에 사용자 계정과 그룹을 공유하지 않습니다.

버전 설치 및 제거

side-by-side 실행용으로 응용 프로그램을 설계할 때는 다음과 같은 버전 설치 및 제거 지침을 따르십시오.

  • 다른 버전의 .NET Framework에서 실행되는 다른 응용 프로그램이 필요로 할 수 있는 정보는 레지스트리에서 삭제하지 않습니다.

  • 다른 버전의 .NET Framework에서 실행되는 다른 응용 프로그램이 필요로 할 수 있는 레지스트리의 정보는 대체하지 않습니다.

  • 다른 버전의 .NET Framework에서 실행되는 다른 응용 프로그램이 필요로 할 수 있는 COM 구성 요소는 등록을 취소하지 않습니다.

  • 이미 등록된 COM 서버의 InprocServer32나 다른 레지스트리 항목은 변경하지 않습니다.

  • 다른 버전의 .NET Framework에서 실행되는 다른 응용 프로그램이 필요로 할 수 있는 사용자 계정 또는 그룹은 삭제하지 않습니다.

  • 버전이 지정되지 않은 경로를 포함하는 항목은 레지스트리에 추가하지 않습니다.

파일 버전 번호 및 어셈블리 버전 번호

파일 버전은 런타임에 사용되지 않는 Win32 버전 리소스입니다. 일반적으로 내부 QFE에 대해서도 파일 버전을 업데이트할 수 있습니다. 두 개의 동일한 파일이 서로 다른 파일 버전 정보를 가질 수 있으며 두 개의 서로 다른 파일이 동일한 파일 버전 정보를 가질 수도 있습니다.

어셈블리 버전은 어셈블리 바인딩을 위해 런타임에서 사용됩니다. 버전 번호가 다른 두 개의 동일한 어셈블리는 런타임에서 두 개의 다른 어셈블리로 취급됩니다.

전역 어셈블리 캐시 도구(Gacutil.exe)를 사용하면 파일 버전 번호만 최신일 경우 어셈블리를 바꿀 수 있습니다. 설치 관리자는 일반적으로 어셈블리 버전 번호가 더 크지 않는 한 기존 어셈블리 위에 설치하지 않습니다.

참고 항목

개념

어셈블리 바인딩 리디렉션

응용 프로그램 및 구성 요소의 서비스 전략 결정

기타 리소스

Side-by-Side 실행 기본 사항

여러 버전의 응용 프로그램 또는 구성 요소 만들기