我內部開發了SSIS組件,並試圖將其移植到SSIS 2016.問題是該組件顯示在SSIS工具箱中,但是一旦我嘗試通過雙擊打開組件UI,我使用方法簽名(我的程序集中的方法)獲取異常「找不到方法」。在組件UI類中引發異常。自定義SSIS組件 - 找不到方法
環境:
- VS 2015
- SSDT 17.2
- SSIS項目配置用於SQL 2016
- machine.config中用於定製從版本 組件結合SQL服務器組件32和64位的框架10至13(參見下面的 ,原因在於此)
VS解決方案概述(傳統):
- 單獨C#項目組件,UI類,形式(組分UI)和後面表格 邏輯
- .NET版本用於組分和UI的項目是4.0和形式和 邏輯項目C#項目3.5
- 參考組件和UI類使用SQL Server的DLL版本13,別人用10版(SQL Server 2008中) - 從2008年移植到2012
已經檢查:
- UITypeName好
- 調試組件時,它表明組件與「缺失」 方法已裝入,並且它是一個很好的(VS - 調試 - 窗口 - 模塊)
- 確認「丟失」的方法存在使用中間體窗口(方法簽名的目視檢查 ,聲明類型和各自的模塊類型是 從加載)在文件的csproj
- EmbedInteropTypes設置爲true引用(與假相同)
- 成功從控制檯應用程序打開包,找到自定義組件 實例並打開其UI。
由於引發異常調用位於我組裝「失蹤」的方法時,我能想象的唯一的事情是,它無法找到我的DLL或不識別的類型(在SSIS組件定義)。然而,反射和VS模塊窗口顯示,一切都存在。
有沒有人有任何想法如何克服這種情況?
在此先感謝。
SSIS組件相關的程序集位於GAC中並位於適當的文件夾中,因爲組件在SSIS工具箱中可見。我的其他程序集在GAC中,正如問題中所述,VS,Debug,Windows,Modules顯示程序集是從適當的位置加載的。 –
考慮從鏈接總結答案以供將來打樣 –
對不起,如果我的回答不明確,我的主要工作是開發SSIS自定義組件。對於這個特定的問題,有兩件事,要麼不是GAC中的程序集,要麼是在GAC中部署了一個不包含你方法的舊組件,因此你需要重新編譯你的dll並在GAC中進行更新。 – dijikstra