이러한 “파일 또는 어셈블리 또는 해당 종속성 중 하나를로드 할 수 없습니다”문제 중 하나가 있습니다.
추가 정보 : 파일 또는 어셈블리 ‘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에 대한 참조를 찾을 수 없습니다.
이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
또한 이와 같은 문제를 일반적으로 디버깅하는 방법에 대한 팁을 부탁드립니다.
답변
-
이전 버전의 Unity를 참조하는 어셈블리를 참조하고 있는지 확인하십시오. 예를 들어
ServiceLocator.dll
, 이전 버전의 Unity 어셈블리가 필요한 어셈블리가 있다고 가정 해 봅시다 . 이제 참조 할 때 이전 버전의 UnityServiceLocator
를 제공해야하므로 문제가 발생합니다. -
모든 프로젝트가 어셈블리를 빌드하는 출력 폴더 일 수 있으며 이전 버전의 통일성이 있습니다.
FusLogVw 를 사용 하여 이전 어셈블리를로드하는 사람을 찾고 로그의 경로를 정의하고 솔루션을 실행 한 다음 Unity 어셈블리가로드 된 첫 번째 라인을 확인하고 (FusLogvw에서) 두 번 클릭하고 호출을 볼 수 있습니다. 조립하고 여기에 있습니다.
답변
IIS 관리자 열기
응용 프로그램 풀 선택
그런 다음 사용중인 수영장을 선택하십시오
고급 설정으로 이동 (오른쪽)
32 비트 응용 프로그램 사용 플래그를 false로 변경하십시오.
답변
저에게는 다른 솔루션 중 어느 것도 작동하지 않았습니다 (정리 / 재 구축 전략 포함). Visual Studio 를 닫았다가 다시 여는 다른 해결 방법을 찾았 습니다 .
Visual Studio가 솔루션과 모든 프로젝트를 다시로드하고 프로세스의 종속성을 다시 확인해야한다고 생각합니다.
답변
솔루션에서 디버그 및 릴리스 폴더를 정리하십시오. 그런 다음 단결을 제거하고 다시 추가하십시오.
답변
99 %에서 파일 또는 어셈블리를로드 할 수 없거나 해당 종속성 중 하나가 종속성 으로 인해 발생합니다! 다음 단계를 따르는 것이 좋습니다.
-
http://www.dependencywalker.com/ 에서 Dependency Walker 를 다운로드 하십시오.
-
실행 종속성 워커를 하고 (내 경우에 DLL을 엽니 다
NativeInterfaces.dll
) -
빨간색 오류 파일 열기 오류로 하나 이상의 dll을 볼 수 있습니다 …
-
시스템에서이 dll이 누락되었음을 의미합니다. 내 경우에는 dll 이름이
MSVCR71.DLL
-
Google에서 누락 된 dll을 다운로드하고 올바른 경로로 복사 할 수 있습니다 (내 경우
c:\windows\system32
) -
이 시점에서 GAC (Global Assembly Cache)에 새 dll을 등록해야합니다. DOS 터미널을 열고 다음을 작성하십시오.
cd \Windows\System32 regsvr32 /i msvcr71.dll
-
응용 프로그램을 다시 시작하십시오!
답변
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 제거 및 추가 (참고 : 동일한 버전을 추가)