2017-08-22 45 views
0

我內部開發了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模塊窗口顯示,一切都存在。

有沒有人有任何想法如何克服這種情況?

在此先感謝。

回答

-1
+0

SSIS組件相關的程序集位於GAC中並位於適當的文件夾中,因爲組件在SSIS工具箱中可見。我的其他程序集在​​GAC中,正如問題中所述,VS,Debug,Windows,Modules顯示程序集是從適當的位置加載的。 –

+0

考慮從鏈接總結答案以供將來打樣 –

+0

對不起,如果我的回答不明確,我的主要工作是開發SSIS自定義組件。對於這個特定的問題,有兩件事,要麼不是GAC中的程序集,要麼是在GAC中部署了一個不包含你方法的舊組件,因此你需要重新編譯你的dll並在GAC中進行更新。 – dijikstra

1

我張貼我的答案,也許有人會覺得它有用。

似乎VS 2015和/或SSDT 17.2存在問題。嘗試修復,卸載和安裝軟件和身份證沒有幫助。卸載SSSDT 17.2併爲VS 2015安裝SSDT 16.5有所幫助。在此之後,對於我的SSIS組件完全相同的部署過程,以及完全相同的程序集版本工作得很好。所以唯一可以識別爲變化的是SSDT的版本。

不幸的是,我不知道這種行爲的特殊原因,我沒有更多的時間去尋找。希望這也能幫助別人。