2010-05-20 4 views
2

나는 ActiveReports 2 및 ActiveReports 6에서 작성된 보고서를 동시에 사용해야하는 프로젝트가 있습니다. 전반적으로 작동하지만 괜찮습니다. 그러나 일부 도우미 어셈블리는 동일한 이름을 사용합니다. 예를 들어 PDF로 내보낼 수 있으려면 두 버전 모두 ActiveReports.PdfExport.dll이라는 어셈블리를 사용합니다. 물론 해당 어셈블리는 다릅니다.동일한 어셈블리의 다른 버전 사용

ActiveReports.PdfExport.dll에 직접 액세스하지 않습니다. 이는 ActiveReports 런타임에서 처리합니다.

둘 모두를 프로젝트에 포함시키는 방법을 찾을 수 없습니다. 방법이 있습니까? GAC가 대답입니까?

답변

6

이름 충돌이있을 경우 각 어셈블리에 대해 external aliases을 별도로 작성하면 도움이됩니다. 어셈블리 이름 충돌에 대해서는 ILMerge을 살펴보십시오. 모든 관련 어셈블리를 함께 결합 할 수 있습니다. 필요한 어셈블리를 모두 조합 한 ActiveReports 2 어셈블리와 ActiveReports 6 어셈블리를 만듭니다.

0

네, GAC에 두 가지를 넣어야합니다 (클라이언트 어셈블리의 경우이 기능이 만들어졌습니다).

내 아이디어 : 두 개의 도해체 - 헬퍼를 만들고, 적절한 어셈블리를 참조하고, 일종의 공장이나 관리자로 등록하고, 필요할 때마다 특정 하나를 호출하십시오.

1

GAC도 편도이지만 Fusion 해상도는 많은 유연성이있어 충분할 수 있습니다. Fusion은 어셈블리 이름 인 [DLL | EXE]에 대해 BaseDirectory를 조사합니다. 발견되지 않으면 BaseDirectory \ Name. [DLL | EXE] \ Name. [DLL | EXE]을 검사합니다. 따라서 Bin 폴더에 ActiveReports.PdfExport.DLL이라는 폴더를 만들고 거기에 이전 버전의 파일을 덤프 할 수 있습니다.

관련 문제