2008-09-16 73 views
2

我目前已經獲得了一組報告,其中的一些常見功能位於.rdl文件中的代碼塊中。這顯然是一個可維護性問題,我想知道是否有人知道這些不同的報告共享一個通用代碼庫的方式?從SQL Server 2005 Reporting Services報告調用.Net程序集?

理想情況下,我想將一個.Net程序集附加到我的Reporting Services項目中,我的所有報告都可以訪問和調用函數。每當需要對通用功能進行更改時,這將節省嘗試更新和重新部署大約100個報告的麻煩。

有什麼建議嗎?

回答

5

從Visual Studio中的報表屬性中,在'參考'選項卡上添加包含託管代碼的部件的詳細信息。可以使用指定的實例名稱從報表內的表達式調用此代碼。

該程序集既可以存儲在Visual Studio的GAC或PrivateAssemblies目錄中,也可以部署到Reporting Services服務器上的Report Service'bin'目錄。欲瞭解更多信息,請參考How to use custom assemblies or embedded code in Reporting Services

1

非常感謝的傢伙,我現在可以從我的報告中打電話給我的程序集。

問題補充: 有一個命名空間,當我創造我的裝配,使得它知道在報表設計對象,如字段和參數的,我可以包括哪些?如果我能以強類型的方式向我的程序集傳遞字段集合,這將非常棒。

而答案:一對夫婦的搜索的時間顯示,添加\ Program Files文件\微軟的Visual Studio 8 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.ReportingServices.ProcessingObjectModel.dll在我的程序集的引用讓我訪問各種Reporting Services類型,如字段和參數。請注意,在Reporting Services 2008中,namespace changes

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。

Plus使您的方法共享或靜態。這很容易。

創建一個部署批處理文件。例如:

@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" 

最後,在預覽之前構建您的報告。

如果它建立了,你很可能就在你的路上。

除...

你不能把它部署到生產報表服務器,因爲你永遠得到以下錯誤:

加載時出錯代碼模塊

這是我現在正在工作。

+0

我正在將我的dll複製到錯誤的生產服務器上。確保使用上面批處理文件中使用的相同類型的路徑將您的dll複製到生產服務器。 – Daver 2009-10-10 02:34:44

相關問題