[VS2010]引用Microsoft.SqlServer.ManagedDTS
或許大家看到這標題可能會很疑惑,引用相關參考這種小兒科也能寫一篇(旁邊的人小聲的說:我在娘胎就會了...),
但也因為使用VS2010無法那麼順利引用Microsoft.SqlServer.ManagedDTS,
剛好也順便讓我了解了GAC目錄結構,自己紀錄一下。
因工作上的需要,我可能需要使用 ASP.NET 來呼叫 SSIS,
雖然早在之前自己有使用VS2008開發並(參考Excecute SSIS package (DTSX) from ASP.Net)順利達陣,
本想升級之前舊有VS2008專案為VS2010,但該專案不知道被我丟那裏去了(...悶),
由於自己電腦只剩下VS2010 IDE,所以只好使用VS2010來開發,
但當我打算引用 Microsoft.SqlServer.ManagedDTS 參考時,卻怎麼也找不到 ,
也就會出現如下錯誤
如果你有安裝 SQL2005 那你可以在以下路徑找到這個 dll 檔案
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies
但如果你像我一樣,本機只安裝SQL2008,那你可能需要在以下路徑來取得該檔案
C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\10.0.0.0__89845dcd8080cc91
屬性如下
你可以看到執行階段版本:V2.0.50727。
或許你會擔心沒有上述目錄,但請不要擔心,因為一個比較完整.NET Framework 2.0的 GAC目錄結構應如下圖
也順便讓我來簡單說說這些目錄的Assemblies有什麼不同:
GAC:
存放基於.NET Framework 1.0/1.1建立的Assemblies,這些Assemblies只能在 32-bit 系統上執行。
GAC_32:
存放基于.NET Framework 2.0建立的Assemblies(x86架構),因為這些Assemblies擁有 32-bit 的 Native CPU Code,
所以只能在 32-bit 系統上執行,或者使用WOW64技術(讓64-bit 系統可以模擬執行32-bit Application )在 64-bit 系统上執行。
GAC_64(這目錄在32bit系統上不存在):
存放基於.NET Framework 2.0建立的Assemblies(x64 or IA64),这些Assemblies可能含有x64或者IA64的Native CPU Code,
所以只能在 64-bit 系統上執行,在這目錄中的Assemblies是依據系統架構決定的(如果是x64系統,這目錄就無法安裝IA64的Assemblies)。
GAC_MSIL:
存放基於 .NET Framework 2.0無特定CPU架構的Assemblies,這些Assemblies可以在 32bit 或 64bit 系統上執行。
而其他NativeImages開頭的目錄,都是存放透過NGen.exe(原生映像產生器)編譯的Assembly(符合目前系統的 Unmanaged Code),
這目錄不需要Strong Name Assemblies(強式命名的組件),後面所接的目錄名稱分別是版本和系統平台。
參考