나는 어떤 DLL myDLL1에로드 오류 닷넷 어셈블리
Assembly.loadFrom("filePath")
를 사용하여 조립 ASSEMBLY가 런타임에 동적으로로드되는 문제를 anyalyse 것을 시도하고있다. 동일한 어셈블리가 정적으로 다른 DLL myDLL2와 동일한 솔루션에서 링크되었으며 솔루션의 두 DLL에 대한 호출 인 myExecutable이 있습니다. 솔루션이 배포 된 폴더에서 정확히 동일한 어셈블리가 발견되면 올바르게 작동합니다. 조립은, 말하자면, 파일 버전 1.0로 exaxtly 같은 닷넷 버전 1.0.1.1을 가지고 닷넷 버전 1.0.1.1 지금 파일 버전 1.0.1.7
새로운 파일 ASSEMBLY의 1.0.1.8를 발행 버전이 .1.7의 조립. 어셈블리는 강력한 이름을 가지며 다른 파일 버전의 공개 키 토큰도 다릅니다. 첫 번째 질문 : 합리적인가?
솔루션 배포 위치에 어셈블리의 새 파일 버전을 배치하면 오류가 발생합니다. NET 런타임은 myDLL1의 매니페스트에 따라 예상대로 공개 키 토큰에 대해 불만을 가지고 있기 때문에 이것이라고 추측합니다.이 추측을 확인할 수 있습니까?
Assembly Binder Log Entry (11.11.2011 @ 13:38:52)
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable myExecutable
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = xxxxx
LOG: DisplayName = ASSEMBLY (Partial)
LOG: Appbase = (folder the solution is deployed to)
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : myDLL1, Version=2.1.2.0, Culture=neutral, PublicKeyToken=.....
===
LOG: Start binding of native image ASSEMBLY, Version=1.0.1.1, Culture=neutral, PublicKeyToken=xxxxxxxx.
LOG: IL assembly loaded from ASSEMBLY.
WRN: No matching native image found.
LOG: Bind to native image assembly did not succeed. Use IL image.
I 어셈블리 파일 버전 1.0.1.8 공개 키 토큰으로 함께 제 버전 1.0.1.1에 bindingRedirect 사용하려고 다음과 같이
예시 설명하도록 이름으로 fuslogvw 출력된다 파일 버전 1.0.1.7에 해당하는 myDLL1의 매니페스트 정보에서 sn -Tp로 생성하고 ASSEMBLY에 대한 공개 키 토큰을 사용하지만 동일한 오류가 발생합니다. 리디렉션 정보를 myExecutable 구성에 추가했습니다.
그런 다음 새로운 버전의 어셈블리 인 공개 키 토큰 으로 버전 1.0.1.2로 bindingRedirect를 사용하려고했습니다. 새로운 파일 버전이로드되었지만 개정 불일치가 발생합니다.
새로운 파일 버전에 정적으로 링크 된 전체 솔루션을 교체하지 않고도이 설치에서 새 파일 버전의 어셈블리를 사용하는 방법을 알려 줄 수 있습니까? 물론 작동합니까?
TIA와 안부,
다른 키로 새 어셈블리에 서명했음을 나에게 들립니다. 좋지 않다면 공개 키 토큰이 달라서는 안됩니다. –
안녕 한스. 아니요, 서명하지 않았습니다. 구 어셈블리와 새 어셈블리는 제 3 자입니다. 네, 새로운 .net 버전이지만 새로운 공개 키 토큰이 있습니다. 어셈블리의 새로운 _file_ 버전을 신뢰한다고 가정 할 때, 예를 들어 구성 파일을 사용하여 다시 컴파일하지 않고 사용하는 것과 같은 방법이 있는지 확인합니다. 전체 응용 프로그램. – Thomas
질문 제목을 덜 모호하게 만드십시오. 그렇지 않으면 앞으로 비슷한 문제가있는 사람들이 그것을 찾을 수 없습니다. –