programing

파일 또는 어셈블리 시스템을 로드할 수 없습니다.런타임, 버전=4.1.2.0

i4 2023. 8. 19. 09:44
반응형

파일 또는 어셈블리 시스템을 로드할 수 없습니다.런타임, 버전=4.1.2.0

일부 NuGet 패키지(대부분 ASPNET Identity 관련)를 추가한 후 갑자기 다음 오류가 표시되기 시작했습니다.

FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

있습니다.Net Framework 4.7.1이 대상입니다.NuGet 패키지 시스템을 설치해 보았습니다.런타임 4.3.0은 도움이 되지 않았습니다.web.config 파일에는 다음과 같은 참조가 있습니다.

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/>
</dependentAssembly>

시스템이 없습니다.bin 폴더의 Runtime.dll.

아이디어 있어요?

Visual Studio 2017 15.5.5를 사용합니다.

업데이트:

.csproj 파일의 PackageReference 항목을 사용하기 때문에 packages.config 문제가 아닙니다.

일부 종속성이 로드되지 않은 것 같습니다.

어셈블리 바인딩이 잘못되었을 수 있습니다.

app.config 또는 web.config AssemblyBinding 섹션을 삭제합니다.그런 다음 Package Manager 창에서 BindingRedirect를 실행합니다.

Get-Project –All | Add-BindingRedirect

선택 사항:모든 프로젝트의 프레임워크 버전을 업그레이드하는 경우 모든 프로젝트에 대해 모든 Nuget 패키지를 다시 설치해야 합니다.이를 쉽게 수행하려면 다음 패키지 관리자 스크립트를 사용합니다.

Get-Project –All | % { Get-Package -ProjectName $_.ProjectName | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies } }

그런 다음 위의 바인딩 리디렉션 코드를 실행합니다.

저는 최근에 net462에서 net471로 프로젝트를 업그레이드했는데, 제 경우 문제는 net462 버전에 의해 요구되었지만 net471을 심각하게 혼란스럽게 만드는 몇 가지 어셈블리 리디렉션이었습니다.

해결책은 web.config의 모든 어셈블리 리디렉션 항목을 제거하고 Visual Studio가 다시 계산하도록 하는 것이었습니다. 이 항목은 web.config에 다시 추가하기 위해 클릭할 수 있는 경고로 나타납니다.

제 ASP.NET 프로젝트는 VS 15.8.4에서 이미 net471에 있었습니다.기존 NuGet 패키지를 최신 버전으로 업데이트하려고 하면 IIS Express에서 프로젝트를 시작할 때 이 오류가 발생합니다.

잘못된 이미지 형식 예외:파일 또는 어셈블리 '시스템'을 로드할 수 없습니다.런타임' 또는 해당 종속성 중 하나입니다.

프로젝트의 web.config 파일을 수정하여 이 문제를 해결할 수 있었습니다.

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
  </dependentAssembly>

두 시스템 모두에 대한 bindingRedirect 행을 삭제합니다.런타임 종속성으로 인해 프로젝트에서 이 문제가 해결되어 web.config에서 이 문제가 발생했습니다.

  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  </dependentAssembly>

시스템이 없습니다.bin 폴더의 Runtime.dll.

패키지 시스템.런타임이 참조되지만 설치해야 합니다.

  • Visual Studio의 메뉴에서 Tool > NuGet Package Manager > Manage NuGet Packages for Solution...으로 이동합니다.

  • 활성화된 NuGet - Solution 창에서 Installed(설치됨) 탭으로 이동하고 System(시스템)으로 이동합니다.마이크로소프트 런타임.클릭 한 번으로 선택하고 프로젝트에 대한 버전이 있는지 옆 창을 확인합니다.그렇지 않은 경우 프로젝트를 선택하고 설치를 클릭합니다.

  • 솔루션 구축.

저는 이 문제를 가지고 있었고 그 문제의 진상을 밝히는 데 시간이 좀 걸렸습니다.다른 사용자가 나와 유사한 설정을 사용하여 이 문제가 발생할 수 있습니다.

운영하고 있었습니다.IIS(WCF 서비스)의 NET Framework v4.8 앱입니다.실수로 복사하기 전까지는 잘 작동했습니다.NET Core 3.1 DLL을 bin 디렉토리에 저장합니다.IIS는 분명히 호스트를 시도했습니다.NET Core DLL 및 런타임이 없습니다.DLL을 삭제한 후에는 운이 좋았습니다.이것이 다른 누군가에게 도움이 되기를 바랍니다 :)

web.config에 다음을 추가하여 이 문제를 해결했습니다.

<compilation debug="true">
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

특정 어셈블리 버전은 다를 수 있습니다.

언급URL : https://stackoverflow.com/questions/48503930/could-not-load-file-or-assembly-system-runtime-version-4-1-2-0

반응형