문제
이에 따라 게시자 정책 파일을 GAC에 추가하려고합니다. 실 하지만 테스트 서버에서 파일을 추가하려고 할 때 문제가 있습니다.
"어셈블리의 매니페스트 '정책에 지정된 모듈 .3.0.assemblyname.dll'을 찾을 수 없습니다."
내 정책 파일은 다음과 같습니다.
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="*assemblyname*"
publicKeyToken="7a19eec6f55e2f84"
culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0"
newVersion="3.0.0.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
도와주세요!
감사
벤
나는 기본값을 제외하고는 (기본값을 제외하고) 자체가없는 새로운 어셈블리로 처음부터 문제를 다시 만들었습니다. 모든 지역 개발 기계에서 잘 작동하지만 정책 파일을 GAC에 추가하는 것과 동일한 오류를 제공합니다. 서버에서!
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="TestAsm"
publicKeyToken="5f55456fdcc9b528"
culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0"
newVersion="3.0.0.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
다음 방식으로 연결됩니다
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0
pause
도와주세요!
해결책
와우 - 알았어.
나는 이것이 의미하는 바에 정확히 더 많은 관심을 기울여야했다.
중요 참고 : 원래 게시자 정책 파일이 어셈블리와 동일한 디렉토리에 있지 않으면 게시자 정책 어셈블리를 글로벌 어셈블리 캐시에 추가 할 수 없습니다.
그 요구 사항은 솔직히 말해서 등록하지 않았기 때문에 기괴합니다. GAC에 추가하려는 어셈블리에 컴파일 된 원래 정책 파일은 정책 어셈블리를 추가 할 때 정책 어셈블리와 동일한 폴더에 있어야합니다.
다른 팁
좋아 ... 그냥 기본 사항을 확인하고 싶어요 ....
당신은 분명히 GAC에 종속 어셈블리의 두 버전을 설치 했습니까?
Assembly : AssemblyVersion ()] 속성의 버전 번호가 올바른지 확인 했습니까?
그리고 당신은 [어셈블리 : 조립 전환()] 그리고 아니다 집회: 어셈블리 파일 전환("1.0.0.1")].
업데이트: 내 실수, 당신은 GAC에 최신 버전의 어셈블리 만 있으면됩니다. 나는 단지 여기서 그것을 시도했고 그것은 작동합니다. 나의 다른 생각은 공개 키 토큰이 동일하고 당신이 어셈블리 이름을 철자하지 않았는지 확인하는 것입니다.
또한 정책 파일을 생성 할 때 어셈블리 링커의 /버전 스위치를 사용하여 버전 번호를 3.0.0.0으로 명시 적으로 설정하십시오. 그리고 /플랫폼 스위치를 지정하지 마십시오. 예를 들어
al.exe /link:assembly.config /out:policy.3.0.assembly.dll
/keyfile:mykey.snk /version:3.0.0.0
Wise를 사용하여 GAC에 정책 어셈블리를 추가하려면 정책을 추가하는 것과 동일한 작업을 수행합니다. 따라서 정책 어셈블리를 현명한 "글로벌 어셈블리 캐시"에 추가하고 기계의 동일한 위치에 정책 파일 (.config)이있는 한 Wise는 자동으로 GAC에 추가됩니다.