zoukankan      html  css  js  c++  java
  • Reporting Service中引用外部程序集生成二维码

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

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

    "C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Toolsx64gacutil.exe" -i QRCoder.dll

    "C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Toolsx64gacutil.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:SignedPartiallyTrustedDLLsQRCoder.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

    至此,终于完成

  • 相关阅读:
    Mysql 密码过期
    【Linux】 设置Linux的系统时间
    【Ubantu】ubantu 安装 .net core 3.0 的环境
    【Ubantu】Ubantu的常用命令
    【SQL】一个简单的查询所有层级(直到顶层)的sql语句
    【C++】C++中的异常解析
    【C++】C++中的类模板
    【Eclipse】Eclipse如何导出java项目为jar包
    【Kali】kali linux的安装和配置
    【Python】解析Python中的线程与进程
  • 原文地址:https://www.cnblogs.com/liaochifei/p/12720537.html
Copyright © 2011-2022 走看看