2

現在、.rdl ファイル内のコード ブロックに多数の一般的な機能を含む一連のレポートがあります。これは明らかに保守性の問題を示しており、これらの異なるレポートが共通コードのライブラリを共有する方法を誰かが知っているかどうか疑問に思っています。

理想的には、Reporting Services プロジェクトに .Net Assembly をアタッチし、すべてのレポートがアクセスして関数を呼び出すことができるようにしたいと考えています。これにより、共通の機能に変更が必要になるたびに、約 100 件のレポートを更新して再展開しようとするという頭痛の種が解消されます。

助言がありますか?

4

5 に答える 5

5

レポートのプロパティの Visual Studio 内から、[参照] タブで、マネージ コードを含むアセンブリの詳細を追加します。このコードは、指定されたインスタンス名を使用して、レポート内の式から呼び出すことができます。

このアセンブリは、GAC または Visual Studio の PrivateAssemblies ディレクトリに格納でき、Reporting Services サーバーのレポート サービスの「bin」ディレクトリに配置できます。詳細については、Reporting Services でカスタム アセンブリまたは埋め込みコードを使用する方法を参照してください。

于 2008-09-16T12:17:27.940 に答える
2

私はこれで多くの痛みを感じていたので、これが誰かに役立つことを願っています. MSDN の記事から入手できますが、以下にいくつかのポイントがあります。

これを rssrvpolicy.config ファイルに追加することを忘れないでください:

<CodeGroup class="UnionCodeGroup"
   version="1"
   PermissionSetName="FullTrust"
   Name="MyCodeGroup"
   Description="Code group for my data processing extension">
      <IMembershipCondition class="UrlMembershipCondition"
         version="1"
         Url="C:\pathtocustomassembly\customassembly.dll"
       />
</CodeGroup>

私はこれをするのを忘れて、しばらくそれを嫌っていました。

さらに、新しい dll で 2005 の次の両方のフォルダーをヒットすることを忘れないでください。

Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies 
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin

さらに、アセンブリで log4net を使用しないでください。私はそれを機能させることができませんでした。誰かができるかもしれませんが、私はできません。

さらに、私のように失敗すると、Visual Studio を閉じるまでファイルを削除できなくなります。

さらに、メソッドを共有または静的にします。それは簡単です。

展開バッチ ファイルを作成します。何かのようなもの:

@ECHO OFF
REM   Name: SRSDeploy_Local.bat
REM
REM   This batch files copies my custom assembly to my Reporting Services folders.
REM
REM   This is the SQL Server 2005 version:
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin"  

最後に、プレビューする前にレポートを作成します。

それが構築されている場合は、おそらく途中です。

を除外する...

常に次のエラーが発生するため、運用レポート サーバーに配置することはできません。

コード モジュールのロード中にエラーが発生しました

これは私が今取り組んでいるものです。

于 2009-10-10T01:30:22.557 に答える
1

どうもありがとうございました。レポートからアセンブリを呼び出すことができます。

補足質問: アセンブリを作成するときに、フィールドやパラメーターなどのレポートデザイナーのオブジェクトを認識させるために含めることができる名前空間はありますか?たとえば、強く型付けされた方法でフィールドのコレクションをアセンブリに渡すことができれば、本当に素晴らしいことです。

そして答え:数時間の検索で、\ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.ReportingServices.ProcessingObjectModel.dllをアセンブリの参照として追加すると、さまざまなReportingServicesタイプにアクセスできることがわかります。 、フィールドやパラメータなど。Reporting Services 2008では、名前空間が変更されることに注意してください。

于 2008-09-16T16:23:10.907 に答える
1

次の記事では、SSRSレポートから.Netコードを呼び出すさまざまな方法をすべてリストしています。カスタムコードを使用したMicrosoftSQLServer 2000ReportingServicesの拡張

これらすべてのレポートが同じサーバーに対して実行される場合、考慮すべきもう1つのオプションは、データベース内の.Netストアドプロシージャを使用してコードを保持することです。

于 2008-09-16T11:57:27.957 に答える
0

GACにデプロイする必要があります。 http://www.developerdotstar.com/community/node/333

于 2008-09-16T11:56:33.480 に答える