[C#] 파일 또는 어셈블리 또는 해당 종속성 중 하나를로드 할 수 없습니다

이러한 “파일 또는 어셈블리 또는 해당 종속성 중 하나를로드 할 수 없습니다”문제 중 하나가 있습니다.

추가 정보 : 파일 또는 어셈블리 ‘Microsoft.Practices.Unity, Version = 1.2.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

나는 이것을 일으키는 원인이나 원인을 찾기 위해 어떻게 디버깅 할 수 있는지 전혀 모른다.

솔루션 카탈로그 .csproj 파일 및 Unity가있는 모든 곳에서 검색했습니다.

참조 포함 = “Microsoft.Practices.Unity, 버전 = 2.0.414.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL”

내 프로젝트에서 1.2.0.0에 대한 참조를 찾을 수 없습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

또한 이와 같은 문제를 일반적으로 디버깅하는 방법에 대한 팁을 부탁드립니다.



답변

  1. 이전 버전의 Unity를 참조하는 어셈블리를 참조하고 있는지 확인하십시오. 예를 들어 ServiceLocator.dll, 이전 버전의 Unity 어셈블리가 필요한 어셈블리가 있다고 가정 해 봅시다 . 이제 참조 할 때 이전 버전의 Unity ServiceLocator를 제공해야하므로 문제가 발생합니다.

  2. 모든 프로젝트가 어셈블리를 빌드하는 출력 폴더 일 수 있으며 이전 버전의 통일성이 있습니다.

FusLogVw 를 사용 하여 이전 어셈블리를로드하는 사람을 찾고 로그의 경로를 정의하고 솔루션을 실행 한 다음 Unity 어셈블리가로드 된 첫 번째 라인을 확인하고 (FusLogvw에서) 두 번 클릭하고 호출을 볼 수 있습니다. 조립하고 여기에 있습니다.


답변

IIS 관리자 열기

응용 프로그램 풀 선택

그런 다음 사용중인 수영장을 선택하십시오

고급 설정으로 이동 (오른쪽)

32 비트 응용 프로그램 사용 플래그를 false로 변경하십시오.


답변

저에게는 다른 솔루션 중 어느 것도 작동하지 않았습니다 (정리 / 재 구축 전략 포함). Visual Studio닫았다가 다시 여는 다른 해결 방법을 찾았 습니다 .

Visual Studio가 솔루션과 모든 프로젝트를 다시로드하고 프로세스의 종속성을 다시 확인해야한다고 생각합니다.


답변

솔루션에서 디버그 및 릴리스 폴더를 정리하십시오. 그런 다음 단결을 제거하고 다시 추가하십시오.


답변

99 %에서 파일 또는 어셈블리를로드 할 수 없거나 해당 종속성 중 하나가 종속성 으로 인해 발생합니다! 다음 단계를 따르는 것이 좋습니다.

  1. http://www.dependencywalker.com/ 에서 Dependency Walker 를 다운로드 하십시오.

  2. 실행 종속성 워커를 하고 (내 경우에 DLL을 엽니 다 NativeInterfaces.dll)

  3. 빨간색 오류 파일 열기 오류로 하나 이상의 dll을 볼 수 있습니다

  4. 시스템에서이 dll이 누락되었음을 의미합니다. 내 경우에는 dll 이름이MSVCR71.DLL

  5. Google에서 누락 된 dll을 다운로드하고 올바른 경로로 복사 할 수 있습니다 (내 경우 c:\windows\system32)

  6. 이 시점에서 GAC (Global Assembly Cache)에 새 dll을 등록해야합니다. DOS 터미널을 열고 다음을 작성하십시오.

    cd \Windows\System32
    regsvr32 /i msvcr71.dll
  7. 응용 프로그램을 다시 시작하십시오!


답변

Microsoft Enterprise Library (.NetTiers에서 참조)는 이전 버전의 Unity를 참조하는 문제였습니다. 이 문제를 해결하기 위해 web.config에서 다음 바인딩 리디렉션을 사용했습니다.

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

또는 엔터프라이즈 라이브러리를 최신 버전으로 만 업데이트 할 수도 있습니다.


답변

다음은 나를 위해 일했습니다.

  • 임시 파일 제거 C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 파일
  • VSTS를 닫고 다시 열기
  • 동일한 DLL 제거 및 추가 (참고 : 동일한 버전을 추가)