忽略 SSRS 中自定义程序集的更改
Changes to custom assembly in SSRS are ignored
我的自定义程序集仅用于 1 个目的 - 它包含本地化字符串以及读取它们的静态方法。
程序集已成功安装在服务器(SSRS 的 bin 文件夹)上,我已经创建了将静态方法映射到自定义代码的函数 - 一切正常。通过工作,我的意思是我可以使用这个程序集来读取字符串,当我创建本地化版本时 - 它切换区域设置等...
但是,如果我更改或向程序集添加任何文本 - 部署它并确保部署正确的 DLL 文件,SSRS 似乎看不到这些更改。看起来 SSRS(或 IIS)正在以某种方式缓存这个 DLL。
- 我确定 DLL 不在 GAC 中
- 我确保 DLL 包含 altered/added 文本
- 我尝试重启 SSRS 和整个机器 - 没有帮助
- 我已经从整台机器中删除了 DLL - 重新启动它 - 没有帮助
尝试在 Reporting Service 配置管理器中停止和启动 ssrs。我认为这是清除 ssrs 中自定义库缓存的唯一方法。
从某些 .NET 版本看来,GAC 有 2 个物理位置:
C:\Windows\assembly
和
C:\Windows\Microsoft.NET\assembly\GAC_MSIL
我使用 gacutil for .NET 4.0 从 GAC 中删除了程序集,并通过检查第二个位置确保它不存在,显然它没有从第一个位置删除程序集,结果证明程序集在那里。
解决方案是:
- 针对 .NET 2.0 或 3.5 构建库
- 清理两个物理位置
- 从 SSRS 文件夹中删除程序集
- 创建windows 安装包以在 GAC 中正确安装程序集
更新:
The .NET Framework 4.x assemblies are not supported in SQL Server Reporting Services
我的自定义程序集仅用于 1 个目的 - 它包含本地化字符串以及读取它们的静态方法。
程序集已成功安装在服务器(SSRS 的 bin 文件夹)上,我已经创建了将静态方法映射到自定义代码的函数 - 一切正常。通过工作,我的意思是我可以使用这个程序集来读取字符串,当我创建本地化版本时 - 它切换区域设置等...
但是,如果我更改或向程序集添加任何文本 - 部署它并确保部署正确的 DLL 文件,SSRS 似乎看不到这些更改。看起来 SSRS(或 IIS)正在以某种方式缓存这个 DLL。
- 我确定 DLL 不在 GAC 中
- 我确保 DLL 包含 altered/added 文本
- 我尝试重启 SSRS 和整个机器 - 没有帮助
- 我已经从整台机器中删除了 DLL - 重新启动它 - 没有帮助
尝试在 Reporting Service 配置管理器中停止和启动 ssrs。我认为这是清除 ssrs 中自定义库缓存的唯一方法。
从某些 .NET 版本看来,GAC 有 2 个物理位置:
C:\Windows\assembly
和
C:\Windows\Microsoft.NET\assembly\GAC_MSIL
我使用 gacutil for .NET 4.0 从 GAC 中删除了程序集,并通过检查第二个位置确保它不存在,显然它没有从第一个位置删除程序集,结果证明程序集在那里。
解决方案是:
- 针对 .NET 2.0 或 3.5 构建库
- 清理两个物理位置
- 从 SSRS 文件夹中删除程序集
- 创建windows 安装包以在 GAC 中正确安装程序集
更新: The .NET Framework 4.x assemblies are not supported in SQL Server Reporting Services