1

問題

MS は、レポート ビューアー 2010 コンポーネントでネストされたビジネス オブジェクトのサポートを削除したようです。新しい機能を利用できるように Web アプリをアップグレードしたいと考えていますが、大量のレガシー レポートに対して下位互換性を維持する必要があります。

注意事項

1: ホストされた共有 Web サーバー上にあるため、GAC に何も配置できません。
2: 私たちは VB を使用しているため、エイリアス (ac# 機能だと思います) を使用できないようです。そのため、VS で参照をまったく追加できないか、名前空間の競合または参照が既に存在するというエラーが発生します。
3: レポート Web コンポーネント dll 自体は、他の 2 つの新しい dll (例: common.dll と processing.dll) に依存してい
ます。ビジネス オブジェクトにアクセスし、セキュリティ ロールなどをチェックしますが、レポート ビューアーが別のアプリ ドメインで実行されている場合、これは機能しないようです。これはおそらく回避できます。

これまでのアプローチ

activator.createinstance または同様のリフレクション メソッドを使用して、新しい dll を bin ディレクトリのサブ フォルダーに配置します。Web comonannt が依存している他の dll (共通および処理中) を見つけることができないため、これはまだ機能しないと聞いています。

可能な他のアイデア

選択を管理する新しい C# プロジェクトを作成します。

4

1 に答える 1

1

誰かが興味を持っている場合に備えて。
1)C#プロジェクトを作成しました
。2)必要なdllの1つを名前変更し、両方を参照しました。3)VSの参照のAliasプロパティをそれぞれreportViewer2005またはreportViewer2008に変更しました。
4)レガシアプリケーションがレポートを生成するときに対話するために使用するIReportViewerインターフェイスを作成しました。
5)C#プロジェクトで2つの新しいクラスファイルを使用 extern alias ReportViewer2010Alias;extern alias ReportViewer2008Alias;ました。1つは2010用、もう1つは2008用で、インターフェイスIReportViewerを実装しました。6
)次に、内部のさまざまなメソッドとイベントを接続しました。

次に、VBアプリからc#プロジェクトを参照しました。これで両方のクラスを使用できるようになり、開発システムで確実に機能するようです。本番サーバーのテストのために指が交差しました。

于 2010-03-02T21:45:17.360 に答える