Windows XP의 애플리케이션별 구성

Windows XP에서 애플리케이션별 구성은 애플리케이션별로 기본 구성게시자 구성 을 모두 재정의합니다. 이렇게 하면 특정 애플리케이션의 의존성이 한 버전의 병렬 어셈블리에서 지정된 다른 어셈블리 버전으로 리디렉션됩니다.

참고

Windows Server 2003부터 애플리케이션별 구성은 애플리케이션 구성 파일이 publisherPolicy에서 apply="no"를 지정하고 애플리케이션 호환성 데이터베이스에 해당 항목이 있는 경우에만 애플리케이션별로 게시자 구성을 재정의합니다. 애플리케이션별 구성은 항상 기본 구성을 재정의합니다. 자세한 내용은 애플리케이션별 구성을 참조하세요.

 

특정 애플리케이션의 올바른 작업에 일반적으로 기본 또는 게시자 구성으로 지정된 버전과 다른 어셈블리 버전이 필요한 경우 애플리케이션별 구성이 필요할 수 있습니다. 예를 들어 게시자에 의한 어셈블리 버전의 전역 업데이트는 어셈블리를 수정하지만 이 특정 애플리케이션을 중단할 수 있습니다. 이 경우 애플리케이션별 구성을 사용하여 애플리케이션이 이전 어셈블리 버전으로 계속 실행되도록 할 수 있습니다. 또 다른 예로, 어셈블리 업데이트를 포함하는 서비스 팩 설치는 게시자 구성 을 사용하여 시스템의 모든 애플리케이션 및 어셈블리의 종속성을 버전 1.0.0.0에서 1.0.1.0으로 리디렉션할 수 있습니다. 버전 1.0.0.0이 올바르게 작동해야 하는 애플리케이션이 있는 경우 애플리케이션별 구성을 사용하여 버전 1.0.0.0으로 리디렉션할 수 있습니다.

애플리케이션 관리자는 애플리케이션 구성 파일을 작성하고 설치하여 애플리케이션별 구성을 구현할 수 있습니다. 특정 애플리케이션을 한 버전의 병렬 어셈블리에 대한 의존에서 다른 버전에 대한 의존으로 리디렉션합니다. 애플리케이션 구성 파일 은 게시자 구성 파일애플리케이션 매니페스트어셈블리 매니페스트에 지정된 기본 구성을 재정의할 수 있습니다. 애플리케이션 구성 파일에는 CreateProcess 를 호출할 때 로더가 사용하는 정보가 포함됩니다.

애플리케이션 매니페스트와 게시자 구성을 모두 재정의하도록 애플리케이션을 구성하려면 개발자가 애플리케이션 구성 파일을 작성해야 합니다. 그런 다음 애플리케이션 구성 파일이 배포되어 애플리케이션의 실행 파일과 동일한 폴더에 설치됩니다. 파일 스키마 목록은 애플리케이션 구성 파일 스키마를 참조하세요.

애플리케이션이 애플리케이션별 구성을 사용하는 경우 어셈블리 게시자가 게시자 구성 파일로 발급할 수 있는 중요한 보안 수정 또는 버그 수정을 받지 못합니다. 따라서 애플리케이션별 구성을 사용하는 애플리케이션은 이러한 수정 사항이 포함된 새 어셈블리가 시스템에 적용된 후에도 안전하지 않거나 계속 잘못 작동할 수 있습니다. 이러한 이유로 애플리케이션 개발자는 애플리케이션별 구성을 사용하여 애플리케이션을 제공해서는 안 됩니다. 애플리케이션별 구성은 게시자 구성에 의해 애플리케이션이 손상된 경우에만 회사 관리자가 임시 수정으로 사용해야 합니다. 이 경우 영구 솔루션은 어셈블리 개발자와 애플리케이션 개발자가 함께 작업하여 게시자 구성이 있는 어셈블리가 완전히 이전 버전과 호환되도록 해야 한다는 것입니다.

다음은 애플리케이션 구성 파일의 예입니다. 자세한 내용은 애플리케이션 구성 파일을 참조하세요.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
  <windows>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity 
          name="Microsoft.Windows.mysampleApp" 
          processorArchitecture="x86" 
          version="1.0.0.0" type="win32"/>
        <dependentAssembly>
          <assemblyIdentity type="win32" 
              name="Microsoft.Windows.SampleAssembly" 
              processorArchitecture="x86" 
              publicKeyToken="0000000000000000"/>
          <bindingRedirect 
              oldVersion="2.0.0.0" 
              newVersion="2.0.1.0"/>
        </dependentAssembly>
    </assemblyBinding>
   </windows>
</configuration>