게시자 구성

게시자 구성 파일은 동일한 어셈블리의 다른 버전을 사용하기 위해 한 버전의 병렬 어셈블리에 의존하는 애플리케이션 및 어셈블리를 전역적으로 리디렉션합니다. 이렇게 하면 애플리케이션 및 어셈블리가 영향을 받는 모든 애플리케이션을 다시 빌드하지 않고도 업데이트된 어셈블리를 사용할 수 있습니다.

호환되는 버그 수정 또는 보안 업데이트를 사용하여 새 버전의 어셈블리를 발급할 때 게시자 구성 파일을 어셈블리 게시자가 제공할 수 있습니다. 업데이트된 버전은 완전히 이전 버전과 호환되어야 합니다. 업데이트가 완전히 이전 버전과 호환되지 않는 한 게시자 구성 파일을 사용하여 새 기능을 추가하면 안 됩니다. 게시자 구성 파일을 사용하여 어셈블리의 주 버전 또는 부 버전을 증가하면 안 됩니다. 예를 들어 어셈블리 버전 6.0.0.0을 7.0.0.0 또는 6.1.0.0으로 리디렉션하지 마세요.

게시자 구성 파일은 어셈블리의 게시자만 발급해야 합니다. 어셈블리 개발자는 공유 병렬 어셈블리 및 게시자 구성 파일에 서명해야 합니다. 동일한 키를 사용하여 어셈블리 및 연결된 게시자 구성 파일에 서명합니다. 어셈블리에 사용되는 것과 동일한 도구를 사용하여 게시자 구성 파일에 서명해야 합니다. 어셈블리 서명 예제서명된 파일 및 카탈로그 만들기를 참조하세요.

일반적으로 새 버전의 어셈블리 및 연결된 게시자 구성 파일이 서비스 팩 업데이트에 설치됩니다. 게시자 구성 파일을 설치하면 시스템의 어셈블리가 전역적으로 리디렉션되므로 게시자 구성 파일을 재배포 가능 패키지로 애플리케이션과 함께 제공해서는 안 됩니다. 업데이트되는 어셈블리가 재배포 가능 패키지로 제공되는 경우 게시자는 다음을 모두 제공해야 합니다.

  • 게시자 구성이 포함된 새 버전의 어셈블리를 포함하는 Windows Installer 패키지(.msi 파일)입니다. 이 경우 고객이 시스템을 전역적으로 업데이트하도록 선택했기 때문에 서비스 팩 또는 QFE로 설치될 수 있습니다. 이 버전의 패키지는 애플리케이션에서 설치해서는 안 됩니다.
  • 새 버전의 어셈블리만 포함하는 Windows Installer 병합 모듈(.msm 파일)입니다. 이 버전은 애플리케이션에 포함될 수 있습니다.

어셈블리의 최소 버전이 필요한 애플리케이션은 최소 버전에 대한 종속성을 명시해야 합니다. 시스템에서 최소 버전을 사용할 수 없는 경우 애플리케이션이 시작되지 않습니다. 재배포 가능 패키지로 사용할 수 있는 경우 애플리케이션 설정에 포함되어야 합니다.

예를 들어 다음 게시자 구성 파일을 설치하면 바인딩이 Microsoft.Windows.SampleAssembly 버전 2.0.0.0에서 버전 2.0.1.0으로 리디렉션됩니다. 그러면 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue> 아래에 1.1.0.0.Policy라는 새 정책이 추가됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="1.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
      </dependentAssembly>
   </dependency>
</assembly>

동일한 어셈블리에 대해 다음 게시자 구성 파일을 설치하면 Microsoft.Windows.SampleAssembly 버전 2.0.0.0에서 버전 2.0.3.0으로 바인딩이 리디렉션됩니다. 그러면 %systemDrive%\windows\winsxs\policies\x86_policy.2.0.Microsoft.Windows.SampleAssembly_75e377300ab7b886_x-ww_<hashvalue> 아래에 2.1.0.0.Policy라는 다른 정책이 추가됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32-policy" publicKeyToken="0000000000000000" name="policy.2.0.Microsoft.Windows.SampleAssembly" version="2.1.0.0" processorArchitecture="x86"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.SampleAssembly"  processorArchitecture="x86" publicKeyToken="75e377300ab7b886"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.3.0"/>
      </dependentAssembly>
   </dependency>
</assembly>