ASP.NET에서 다운 그레이드 한 후 발생하는 오류 (찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다.)

종속성이 복잡한 패키지를 여러 개 사용하여 개발하는 경우 종종 종속성 문제가 발생합니다. 그런 문제에 대한 해결책입니다.

전제



ASP.NET에서 NuGet을 사용하여 패키지 관리를 하고 있다.

우선 확인하는 것



의존관계가 망가져 버린 경우는, 패키지를 모두 재설치해 보면 낫는 것이 많이 있습니다. 특히 NuGet을 사용하고 있을 때는 매우 간단하게 가능합니다.
패키지 파일(/package)과 바이너리 파일(/project/bin)을 삭제하고 공식 절차에 따라 재설치를 시도하십시오.

메서드나 속성을 찾을 수 없음



후호 호환성이 없는 ・의도하지 않고 소실해 버린 등의 경우는, 부득이하게 다운그레이드가 필수가 되어 오는 경우가 있습니다.

NuGet 패키지
다운그레이드한 후 "파일 또는 어셈블리(패키지 이름) 또는 종속성 중 하나를 로드할 수 없습니다. 발견된 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다."와 같은 오류 메시지가 나타날 수 있습니다. 있습니다. 이 경우 web.config에서 지정한 패키지 리디렉션이 잘 수정되지 않은 경우가 많습니다.

Web.config
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

그렇다면 이전 버전은 버전 11.0.0으로 리디렉션됩니다. 다운 그레이드하는 경우 당연히 11.0.0 DLL이 없기 때문에 오류가 발생합니다.
리디렉션을 지정하는 부분을 설치한 버젼으로 지정해 주는 것으로 이것은 회피할 수 있습니다.

Web.config
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.1.0" newVersion="9.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

좋은 웹페이지 즐겨찾기