Reporting Service中引用外部程序集生成二维码

1、先将强命名的外部程序集注册到GAC(此处有坑,后面再说)

先在数据库上找到gacutil.exe,然后用管理员身份打开命令提示符,并CD到程序集的位置,执行以下命令

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\gacutil.exe" -i QRCoder.dll

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\gacutil.exe" -i QRCoderImageToByteArray.dll

 

 

2、在报表中使用外部程序集

打开报表,打开工具栏的  报表——报表属性,引用GAC里的程序集,并添加自定义代码

 

 

 

 

 

 然后在报表中添加图片控件,设置图片控件的来源为数据库,

 

 

 

 =Code.QRCoderByteArray(Fields!LeadId.Value + "," + Fields!FullName.Value +"," +Fields!new_age.Value)

 

 

然后就可以使用了

 

 处理过程中遇到的坑:

1、开发环境是有gacutil.exe的,但是生产环境没有安装.net Framework和Microsoft Sdk,所以没有gacutil.exe注册Gac

后来通过第三方的PowerShell Gac扩展解决,https://github.com/LTruijens/powershell-gac

下载后找到Gac文件夹,打开PowerShell,通过$env:PSModulePath查找PS路径,并将Gac文件夹放到默认路径中,并执行Import-Module GAC,成功安装扩展

然后在PowerShell里面执行Add-GacAssembly C:\SignedPartiallyTrustedDLLs\QRCoder.dll  将相应的dll添加到Gac

 

 

2、reporting service支持的.net framework是2.0,3.5,而SQL Data Tool支持的是4.0,所以如果程序集是4.0的,会出现在SQL Data Tool中使用正常,但没法注册到CRM中的问题

本来想通过把代码编译成framework 3.5的,但是代码的语法全是4.0的(主要是字符串都是用的$),尝试失败

3、费了好大功夫,在Nuget里面找到了低版本的dll,但是发现是没有强签名的

通过在Nuget中安装了Brutal.Dev.StrongNameSigner强制签名解决,然后将相关联的dll也通过代码重新编译为3.5的,并将这两个dll重新添加到GAC

 

至此,终于完成

 

posted @ 2020-04-17 16:07  随乄风  阅读(817)  评论(3编辑  收藏  举报