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

 

至此,終於完成

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM