2009-03-20 4 views
1

Crystal Reports를 사용하지 않기 전에. 이제 프로젝트에서 Crystal Reports를 프로젝트에 추가했습니다. 프로젝트를 서버로 전송할 때 Crystal 오류가 발생했습니다. 크리스탈이 서버에 설치되어 있지 않은 것 같습니다. 그런 다음 Crystal 11을 서버에 설치합니다. 개발 기계에는 Crystal 8.5가 있습니다. 서버는 응용 프로그램 시작시이 오류를 생성합니다.web.config의 여러 Crystal Reports 버전

"파일 또는 어셈블리를로드 할 수 없습니다 'CrystalDecisions.ReportAppServer.ClientDoc, 버전 = 10.2.3600.0을, 문화 = 중립, PublicKeyToken = 692fbea5521e1304'또는 해당 종속성 중 하나. 시스템에서 지정한 파일을 찾을 수 없습니다."

  • 는 Web.config의 두 버전 참조를 할 수 있습니까? (예 : 크리스탈 8.5 &11)

  • 이 문제를 어떻게 해결할 수 있습니까?

개발 환경에서 C#, Visual Studio 2005 및 Crystal Reports 8.5를 사용합니다.

답변

0

개발 컴퓨터가 서버에서 실행하려고하면 .DLL 파일의 해당 버전을 찾는 이전 버전을 사용하기 때문에 이것은 단지 버전 충돌입니다. 아마 같은 버전이 dev 컴퓨터와 서버에 모두 설치되어 있는지 확인한 다음 Crystal 11의 DLL 파일을 사용하여 web.config를 모두 확인해야합니다.

빠른 해킹은 서버의 올바른 파일 버전을 파악하고 그 번호를 web.config에 입력하는 것입니다.

EDIT : 다른 옵션은 서버의 web.config에서 .DLL의 버전을 변경하는 것입니다. 기본적으로 다른 사람들이 말하는 것입니다. 문제는 배포 할 때마다 계속 변경해야한다는 것입니다. 매우 성가 시게됩니다. 게다가 당신은 다른 프로그램을 테스트하고 있기 때문에 dev 컴퓨터에서 테스트하고있는 것은 사실 유효하지 않습니다. 버전간에 변경된 사항이 있기 때문에 DEV에서 결코 볼 수없는 프로덕션에서 버그를 볼 수 있습니다.

Dev PC에 Crystal 11을 설치할 수없는 이유가 있습니까?

+1

가능합니까? 웹 구성에서 두 버전의 dll 참조를 모두 사용할 수 있습니까? – Kartik

+0

아니요, 저는 두 장소에 존재하는 객체에 대해 불평 할 것이라고 확신합니다 ... – CodeRedick

0

당신은 아마 당신의/bin 폴더로이 프로젝트에 그 DLL에 대한 참조를 추가 (또는 그렇지 않으면 얻을 필요가있다.

+0

더 많은 dll이 필요하다는 것을 설명해 주시겠습니까? – Kartik

+0

버전 10.2.3600 인 CrystalDecisions.ReportAppServer.ClientDoc –

0

오류 메시지가 서버가 CrystalDecisions 버전 10.2.3600.0이 있는가, 모든 것을 말한다. 서버의 설정을 업데이트 할 필요가 같은 GAC 중 하나에서 토큰을 일치 또는 어딘가에 응용 프로그램 또는 웹 사이트에서 찾을 수와 ReportAppServer.ClientDoc?

는 소리.

0

을 아니, 참조 할 수 없습니다 같은 이름의 어셈블리의 두 가지 버전.

이 작업을 수행하는 한 가지 방법은 두 개의 서로 다른 web.config 파일을 만드는 것입니다. 하나는 dev 용이고 다른 하나는 생산 용입니다. 배포의 일부로 파일의 유망한 버전을 사용하기 만하면됩니다. 배포가 자동화 된 경우 dev web.config를 삭제하고 파일을 복사 한 후에 프로덕션 버전의 이름을 바꾸는 것처럼 간단해야합니다.

0

10.2.3600.0은 Visual Studio 2005에 최신 패치가 포함 된 Crystal Reports 버전입니다.

.net 2.0 용 Crystal Reports 런타임을 서버에 설치해야합니다. 당신은 dev에 기계

64에서 런타임 설치를 얻을 수 있습니다 C : \의 Program Files (x86) \ 마이크로 소프트 비주얼 스튜디오 (8) \ Crystal Reports를 \ CRRedist \ X64

86 C : \ 프로그램 파일 (86) \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ CrystalReports

0

가장 좋은 솔루션은 동일한 런타임을 서버에 설치하는 것입니다.
어쨌든, 당신은 당신의 app.config 또는 Web.config의이 XML을 사용할 수 있습니다 oldVersion 당신이 개발 및 NEWVERSION에 사용하는 버전입니다

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304" culture="neutral"/> 
     <bindingRedirect oldVersion="xx.x.xxxx.x" newVersion="yy.y.yyyy.y"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     ... 
    </assemblyBinding> 
    </runtime> 

가 서버에 설치되어있는 버전입니다