'Microsoft' 파일 또는 어셈블리를 로드할 수 없습니다.데이터.Edm'
Windows Azure Storage NuGet 패키지 버전 4.1.0을 사용하고 있으며 Microsoft에 종속되어 있습니다.Microsoft가 포함된 패키지도 추가했습니다.Data.Edm dll.애플리케이션을 빌드하고 실행할 때 다음과 같은 오류가 자주 발생합니다.
Could not load file or assembly 'Microsoft.Data.Edm' or one of its dependencies. The
located assembly's manifest definition does not match the assembly reference. (Exception
from HRESULT: 0x80131040)
우리는 web.config에 다음과 같은 바인딩 리다이렉트를 가지고 있고 또한 확인해 보았는데 이것이 마이크로소프트의 유일한 버전입니다.솔루션의 모든 프로젝트에서 참조 중인 Data.Edm.
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
</dependentAssembly>
가끔 bin 폴더를 보면 dll 버전의 Microsoft가 나옵니다.데이터. Edm은 v 5.6.0입니다.저는 모든 프로젝트를 다 겪었고 마이크로소프트에 대한 참조 자료를 찾을 수 없습니다.Data.Edm(스토리지 클라이언트 제외), 즉 5.6.1입니다.
5.6.0 버전의 출처를 확인하는 가장 좋은 방법은 무엇입니까?이 오류가 발생하면 bin 및 obj 폴더를 삭제하고 다시 빌드하면 5.6.1 버전이 있고 모든 것이 작동하지만 결국 다시 발생합니다.
편집:
NuGet에서 모든 최신 버전으로 다시 업그레이드했지만 여전히 실패했습니다. 다음과 같은 종속성을 보여주는 도구를 실행했습니다.
Possible conflicts for Microsoft.Data.Edm:
Microsoft.Data.OData references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.Data.Services.Client references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.Edm, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Possible conflicts for Microsoft.Data.OData:
Microsoft.Data.Services.Client references Microsoft.Data.OData, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
제가 이해할 수 없는 것은 앱 바인딩 리디렉션이 설정되어 있지만 2.6.0 버전이 복사될 때도 있고 2.6.2 버전이 복사될 때도 있다는 것입니다.왜 이런 일이 벌어지는지 아는 사람이 있습니까? 전에는 이런 문제가 없었습니다.
같은 오류 메시지가 표시되었지만 제 문제는 Azure 제품과 관련이 없습니다.제 경우 OData를 버전 3에서 4로 업데이트했는데, Nuget이 더 이상 사용되지 않는 dll에 대한 바인딩 리디렉션을 남긴 것으로 보입니다.실제로는 총 세 개의 마이크로소프트가 있었습니다.데이터, Edm, 마이크로소프트데이터, OData 및 시스템.공간의.
제 해결책은 더 이상 사용되지 않는 바인딩 리디렉션을 제거하는 것이었습니다.빌드 프로세스에서 이전 dll을 제거할 수 없는 경우 bin 폴더에서 이전 dll을 제거해야 합니다.
팀 구성원이 이 문제를 해결하는 것처럼 보이는 한 가지 방법은 Visual Studio의 모든 인스턴스를 닫고 패키지 디렉터리의 내용을 삭제한 다음 Visual Studio를 다시 연 다음 패키지를 복원하고 다시 만드는 것입니다.하지만 이것이 항상 효과가 있는 것은 아닙니다.
Visual Studio 빌드 출력 상세도를 높임으로써 문제가 있는 프로젝트를 식별하여 시스템 중 하나에서 문제를 추적할 수 있었습니다.
그런 다음 출력물을 검색하고 "Microsoft"를 검색하여 문제가 있는 대상 프로젝트를 식별했습니다.는 마이크로소프트에 하는 것처럼 .우리는 그것이 마이크로소프트에 간접적으로 의존하는 것처럼 보인다는 것을 알아차렸습니다.Data.Edm, 하지만 우리는 어셈블리가 그 프로젝트의 패키지로 명시적으로 포함되지 않았다는 것을 알게 되었습니다. 패키지 콘솔을 으로 다음을 실행했습니다.Install-Package Microsoft.Data.Edm문제를 해결했습니다.
다음은 시도할 수 있는 몇 가지 방법입니다.
- 빌드 후 이벤트를 확인하여 Microsoft가 없는지 확인합니다.Data.Edm.dll 파일을 bin 폴더에 수동으로 복사하는 중입니다.
- 다른 패키지가 Microsoft에 종속되어 있지 않은지 확인합니다.데이터. Edm 5.6.1.이를 위한 쉬운 방법은 package.config 파일을 보는 것입니다.
- 코드가 소스 제어에 있는 경우 아무도 bin 폴더를 체크인하지 않도록 합니다.저는 얼마나 많은 사람들이 이 기본적인 규칙을 모르는지 놀랍습니다.
- Windows Azure를 제거합니다.스토리지 및 마이크로소프트.데이터. Edm 패키지.그런 다음 다시 설치하고 안정된 버전만 설치하십시오.
HTH.
저는 오늘 비슷한 사례를 만났습니다. 제 상황에서 빌드는 항상 이전 버전의 dll을 디버그 폴더에 복사합니다. 그 이유는 제 프로젝트가 이 dll을 직접 참조하는 것이 아니라 이 dll을 참조하는 다른 프로젝트를 참조하기 때문입니다.
그래서 제 프로젝트는 빌드할 때 GAC나 다른 곳의 오래된 버전을 찾습니다.
프로젝트에서 이 dll을 정확한 위치에서 명시적으로 참조하여 해결했습니다.
다음과 같이:
<Reference Include="Microsoft.Data.Services.Client, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
</Reference>
빌드 서버에서 동일한 문제가 발생하여 빌드 출력을 확인할 때 다음과 같은 사항을 발견했습니다.
"C:"에서 파일을 복사하는 중:\Program Files(x86)\Microsoft WCF 데이터 서비스\5.6\bin.NET Framework\Microsoft.Data.Edm.dll을 "bin\Microsoft"로 변환합니다.데이터.Edm.dll".
빌드 서버에 내 컴퓨터에 없는 무언가가 설치되어 있는 것 같아서 추적해야 합니다.
아마도 IIS의 가상 경로 문제일 수 있습니다(애플리케이션을 시작할 때 이 어셈블리가 먼저 로드되었습니다)
디스크의 서로 다른 위치에서 동일한 가상 경로로 두 프로젝트를 시작할 때도 같은 문제가 발생했습니다.
해결 방법은 IIS에서 이 경로를 삭제하고 IIS 프로세스를 재설정한 후 VS에서 가상 경로를 다시 생성하는 것입니다.
찾았어요!!
app.config 파일 내부에서 바인딩 리디렉션 버전을 변경합니다.
바인딩 리디렉션 요소가 예외가 불만을 제기하는 버전을 참조하도록 설정하면 예외가 사라집니다.
설명:
app.config 파일과 프로젝트 참조 어셈블리가 동기화되지 않아 오류가 발생한 것 같습니다.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
"패키지" 폴더를 삭제하고 패키지를 다시 설치한 후 이 오류가 발생했습니다."Clean Solution"과 "Rebuild Solution"을 실행하여 오류를 해결할 수 있었습니다.
저는 Windows Azure를 제거해야 했습니다.모바일 서비스.백엔드.Microsoft를 포함한 많은 어셈블리를 제거하는 엔티티 NuGet 패키지.데이터. 에드먼.그리고 나서 그냥 다시 설치했고 기적적으로 작동했습니다!
이것은 저의 Azure Mobile Services WebApi 프로젝트에 있었습니다. 그래서 그것은 작동해야 했고, 감사하게도 지금 작동합니다.
이것이 도움이 되길 바랍니다.
이 문제는 Visual Studio를 닫았다가 다시 열어서 해결되었습니다.
빌드 세부 정보로 전환 2) Microsoft 검색Data. 프로젝트에 사용된 다른 어셈블리의 버전 편집 및 비교 3) 다른 어셈블리에 사용된 버전으로 업데이트
나의 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/25175525/could-not-load-file-or-assembly-microsoft-data-edm
'programing' 카테고리의 다른 글
| Node.js에서 POST 데이터를 처리하는 방법은 무엇입니까? (0) | 2023.05.22 |
|---|---|
| Express-js가 내 정적 파일을 가져올 수 없습니다. 왜죠? (0) | 2023.05.22 |
| 패키지 설치 방법.npm을 사용하는 현재 디렉터리의 json 종속성 (0) | 2023.05.22 |
| JQuery: 입력 필드에서 변경 사항 감지 (0) | 2023.05.17 |
| ".NET Core"란 무엇입니까? (0) | 2023.05.17 |

