.NET assembly 강제지정

ESOLOGY·2022년 2월 11일
0

문제상황

Oracle.DataAccess를 사용하는상황에서 PC에 다른버전에 ODAC가 설치 되어 있었다.
C:\Windows\assembly(GAC)에 사용하던 버전보다 더 높은 버전의 ODAC가 설치되어 있었고
어플리케이션은 높은 버전의 GAC에 등록된 Oracle.DataAccess를 참조하였다.
이 문제를 해결하기 위하여 assemblybinding을 해 주었는데.

  1. publisherPolicy
    구성 요소 공급업체가 새 버전의 어셈블리를 릴리스하는 경우 공급업체는 게시자 정책을 포함할 수 있으므로 이전 버전을 사용하는 애플리케이션은 이제 새 버전을 사용합니다. 특정 어셈블리에 게시자 정책을 적용할지 여부를 지정하려면 publisherPolicy> 요소를 dependentAssembly 요소에 넣습니다.>
    apply 특성의 기본 설정은 예입니다. apply 특성을 no로 설정하면 어셈블리에 대한 이전 예 설정이 재정의됩니다.
    애플리케이션 구성 파일에서 publisherPolicy apply="no"/> 요소를 사용하여 게시자 정책을 명시적으로 무시하려면 애플리케이션에 대한 권한이 필요합니다. 에 플래그를 SecurityPermissionFlag 설정하여 사용 권한을 부여합니다 SecurityPermission. 자세한 내용은 어셈블리 바인딩 리디렉션 보안 권한을 참조하세요.

  2. bindingRedirect
    버전에 대한 규칙 설정

<runtime>
	<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
		<dependentAssembly>
			<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"/>
			<bindingRedirect oldVersion="1.0.0.0-12.0.0.0" newVersion="2.111.6.20" />
			<publisherPolicy apply="no" />
		</dependentAssembly>
	</assemblyBinding>
</runtime>
profile
👩‍💻

0개의 댓글