若要在 SQL Server Reporting Services 中部署自定义程序集,请将程序集放在报表设计器和报表服务器的应用程序文件夹中。 默认情况下,自定义程序集在 Reporting Services 中被授予 Execution 权限。 若要授予超出“执行”权限的自定义程序集权限,需要编辑报表服务器的 rssrvpolicy.config 配置文件和报表设计器预览窗口的 rspreviewpolicy.config 配置文件。 或者,可以在全局程序集缓存(GAC)中安装自定义程序集。
注释
报表设计器有两种预览模式:在模式中启动 DebugLocal 报表项目时启动的预览选项卡和弹出预览窗口。 “预览”选项卡使用 FullTrust 权限集执行所有报表表达式,并且不应用安全策略设置。 弹出窗口预览窗口旨在模拟报表服务器功能,因此具有策略配置文件,你或管理员必须修改该文件以在报表设计器中使用自定义程序集。 此弹出窗口预览还会锁定自定义程序集。 因此,需要关闭预览窗口才能修改或更新自定义程序集代码。
在 Reporting Services 中部署自定义程序集
- 将自定义程序集从生成位置复制到报表服务器 bin 文件夹或报表设计器文件夹。 报表服务器的 bin 文件夹的默认位置为 \%ProgramFiles%\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin。 报表设计器的默认位置 %ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies。 - 将自定义程序集放置在报表服务器 bin 文件夹中后,可以发布引用自定义程序集的报表,并将其放在报表设计器文件夹中,使你能够运行和调试在报表设计器中引用自定义程序集的报表。 - 如果需要授予自定义程序集代码权限,超出默认执行权限: 
- 打开相应的配置文件。 rssrvpolicy.config 的默认位置为 \%ProgramFiles%\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer。 rspreviewpolicy.config 的默认位置为 \%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies。 
- 为自定义程序集添加代码组。 有关详细信息,请参阅安全开发(Reporting Services)。 
更新自定义程序集
有时,可能需要更新当前由多个已发布报表引用的自定义程序集的版本。 如果该程序集已存在于报表服务器或报表设计器的 bin 目录中,并且程序集的版本号以某种方式递增或更改,则当前发布的报表将不再正常工作。 需要更新报表定义元素中 CodeModules 引用的程序集的版本,并重新发布报表。 如果知道经常更新自定义程序集,并且当前发布的报表需要引用新程序集,则可能需要考虑在特定程序集的所有更新中使用相同的版本号。
如果你不需要当前发布的报表来引用程序集的新版本,则可以将自定义程序集部署到全局程序集缓存。 全局程序集缓存可以维护同一程序集的多个版本,以便当前报表可以引用程序集的早期版本,并且新发布的报表可以引用更新的程序集。 然而,另一种方法是设置报表服务器的绑定重定向,以强制将旧程序集的所有请求重定向到新程序集。 需要修改报表服务器 Web.config 文件和报表服务器 ReportService.exe.config 文件。 该条目可能如下所示:
<configuration>  
   <runtime>  
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
         <dependentAssembly>  
            <assemblyIdentity name="myAssembly"  
                              publicKeyToken="32ab4ba45e0a69a1"  
                              culture="neutral" />  
            <bindingRedirect oldVersion="1.0.0.0"  
                             newVersion="2.0.0.0"/>  
         </dependentAssembly>  
      </assemblyBinding>  
   </runtime>  
</configuration>