방법: 게시자 정책 만들기

어셈블리 공급업체는 애플리케이션이 업그레이드된 어셈블리에 게시자 정책 파일을 포함하여 최신 버전의 어셈블리를 사용해야 한다고 명시할 수 있습니다. 게시자 정책 파일은 어셈블리 리디렉션 및 코드 기본 설정을 지정하고 애플리케이션 구성 파일과 동일한 형식을 사용합니다. 게시자 정책 파일은 어셈블리로 컴파일되고 전역 어셈블리 캐시에 배치됩니다.

게시자 정책을 만드는 데는 다음 세 단계가 있습니다.

  1. 게시자 정책 파일 만들기

  2. 게시자 정책 어셈블리 만들기

  3. 게시자 정책 어셈블리를 전역 어셈블리 캐시에 추가

게시자 정책에 대한 스키마는 어셈블리 버전 리디렉션에 설명되어 있습니다. 다음 예제에서는 myAssembly의 한 버전을 다른 버전으로 리디렉션하는 게시자 정책 파일을 보여 줍니다.

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="myAssembly"
                           publicKeyToken="32ab4ba45e0a69a1"
                           culture="en-us" />
         <!-- Redirecting to version 2.0.0.0 of the assembly. -->
         <bindingRedirect oldVersion="1.0.0.0"
                          newVersion="2.0.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

코드 베이스를 지정하는 방법을 알아보려면 어셈블리의 위치 지정을 참조하세요.

게시자 정책 어셈블리 만들기

어셈블리 링커(Al.exe)를 사용하여 게시자 정책 어셈블리를 만듭니다.

게시자 정책 어셈블리를 만드는 방법

명령 프롬프트에서 다음 명령을 입력합니다.

al /link:publisherPolicyFile /out:publisherPolicyAssemblyFile /keyfile:keyPairFile /platform:processorArchitecture

이 명령에서 다음이 적용됩니다.

  • publisherPolicyFile 인수는 게시자 정책 파일의 이름입니다.

  • publisherPolicyAssemblyFile 인수는 이 명령에서 생성된 게시자 정책 어셈블리의 이름입니다. 어셈블리 파일 이름은 다음 형식을 따라야 합니다.

    `policy.majorNumber.minorNumber.mainAssemblyName.dll'

  • keyPairFile 인수는 키 쌍을 포함하는 파일의 이름입니다. 동일한 키 쌍으로 어셈블리 및 게시자 정책 어셈블리에 서명해야 합니다.

  • processorArchitecture 인수는 프로세서별 어셈블리의 대상이 되는 플랫폼을 식별합니다.

    참고 항목

    특정 프로세서 아키텍처를 대상으로 하는 기능은 .NET Framework 2.0부터 사용할 수 있습니다.

특정 프로세서 아키텍처를 대상으로 하는 기능은 .NET Framework 2.0부터 사용할 수 있습니다. 다음 명령은 게시자 정책 파일(pub.config)에서 호출된 게시자 정책 어셈블리(policy.1.0.myAssembly)를 만들고, sgKey.snk 파일의 키 쌍을 사용하여 어셈블리에 강력한 이름을 할당하고, 어셈블리가 x86 프로세서 아키텍처를 대상으로 하도록 지정합니다.

al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86

게시자 정책 어셈블리는 적용되는 어셈블리의 프로세서 아키텍처와 일치해야 합니다. 따라서 어셈블리에 MSILProcessorArchitecture 값이 있는 경우 해당 어셈블리에 대한 게시자 정책 어셈블리는 /platform:anycpu를 사용하여 만들어야 합니다. 각 프로세서별 어셈블리에 대해 별도의 게시자 정책 어셈블리를 제공해야 합니다.

이 규칙의 결과로 어셈블리의 프로세서 아키텍처를 변경하려면 버전 번호의 주 구성 요소 또는 부 구성 요소를 변경하여 새 게시자 정책 어셈블리에 올바른 프로세서 아키텍처를 제공할 수 있어야 합니다. 어셈블리에 다른 프로세서 아키텍처가 있으면 이전 게시자 정책 어셈블리에서 어셈블리를 제공할 수 없습니다.

또 다른 결과는 버전 2.0 링커는 항상 프로세서 아키텍처를 지정하기 때문에 이전 버전의 .NET Framework를 사용하여 컴파일된 어셈블리에 대한 게시자 정책 어셈블리를 만드는 데 사용할 수 없다는 것입니다.

게시자 정책 어셈블리를 전역 어셈블리 캐시에 추가

전역 어셈블리 캐시 도구(Gacutil.exe)를 사용하여 게시자 정책 어셈블리를 전역 어셈블리 캐시에 추가합니다.

게시자 정책 어셈블리를 전역 어셈블리 캐시에 추가하는 방법

명령 프롬프트에서 다음 명령을 입력합니다.

gacutil /i publisherPolicyAssemblyFile

다음 명령은 policy.1.0.myAssembly.dll를 전역 어셈블리 캐시에 추가합니다.

gacutil /i policy.1.0.myAssembly.dll

Important

/link 인수에 지정된 원래 게시자 정책 파일이 어셈블리와 동일한 디렉터리에 있지 않으면 게시자 정책 어셈블리를 전역 어셈블리 캐시에 추가할 수 없습니다.

참고 항목