2

ActiveReports 2 と ActiveReports 6 で作成されたレポートを同時に使用する必要があるプロジェクトがあります。全体的には正常に動作しますが、一部のヘルパー アセンブリは同じ名前を使用しています。たとえば、PDF にエクスポートできるようにするために、どちらのバージョンも ActiveReports.PdfExport.dll というアセンブリを使用します。もちろん、対応するアセンブリは異なります。

ActiveReports.PdfExport.dll に直接アクセスしないことに注意してください。これは、ActiveReports ランタイムによって処理されます。

両方をプロジェクトに含める方法が見つかりません。方法はありますか?GACが答えですか?

4

3 に答える 3

6

型名の競合がある場合は、アセンブリごとに個別の外部エイリアスを作成すると役立ちます。アセンブリ名の衝突については、ILMergeを見てください。関連するすべてのアセンブリを組み合わせることができます。必要なすべてのアセンブリと ActiveReports 6 用の別のアセンブリを組み合わせた ActiveReports 2 用のアセンブリを作成します。

于 2010-05-21T02:29:28.863 に答える
1

GAC は 1 つの方法ですが、Fusion 解像度には十分な柔軟性があります。Fusion は BaseDirectory でアセンブリ名 .[DLL|EXE] を調べます。見つからない場合は、BaseDirectory\Name.[DLL|EXE]\Name.[DLL|EXE] を調べます。そのため、Bin フォルダーに ActiveReports.PdfExport.DLL という名前のフォルダーを作成し、そこに古いバージョンのファイルをダンプすることで回避できる場合があります。

于 2010-05-21T01:56:01.293 に答える
0

はい、両方を GAC に配置する必要があります (クライアント アセンブリの場合、これが GAC の目的です)。

私の考え: 2 つのライブラリ ヘルパーを作成し、それぞれを適切なアセンブリに参照し、それらをある種のファクトリまたはマネージャーに登録し、必要なときに特定のものを呼び出します。

于 2010-05-20T22:36:17.507 に答える