2011-07-27 186 views
2

中加載類型'ADODB._Recordset_Deprecated'。看起來,即時通訊正面臨着問題,它開始給我帶來一些頭痛,因爲我正在尋找和尋找仍然不是運氣。無法從程序集'ADODB,Version = 7.0.3300.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'

我要執行從C#DLL中的方法,這個DLL是像4年前的VB 6.0創建的,它是在COM註冊。它採用ADOB.Recordset爲返回,我必須執行(沒有源代碼avaialble:S)方法的類型

我一直在尋找如何加載和執行DLL。

我第一次加載它時出現了問題,我無法加載它Server.CreateObject, Assembly.Load, Assembly.LoadFrom因此我試圖從COM和Visual Studio的引用中添加它導入到名爲Interops的Bin文件夾中。 ]

當Y嘗試使用它,它給了我編譯錯誤,它說:

Error 1 No overload for method 'SelArregloCobertura' takes '6' arguments 

的參數是正確的,它的類型和一切之內。很肯定的這

所以我試圖用思考來執行它這是代碼:

ADODB.Recordset rs = new ADODB.Recordset();  
     string strRamo = "70"; 
     string strSubramo = "01"; 
     string strOficina = "070"; 
     int iClaveSolicitud = 7118; 
     string strModulo = "0"; 
     int iInciso = 1; 

     Poliza.clsdNTCoberturaClass oClass = new Poliza.clsdNTCoberturaClass(); 

     MethodInfo miSelArregloCobertura = oClass.GetType().GetMethod("SelArregloCobertura"); 
     miSelArregloCobertura.Invoke(oClass, new object[] { "70", "01", "070", 7118, "0", 1 }); 
     //oClass.SelArregloCobertura(strRamo, strSubramo, strOficina, iClaveSolicitud, strModulo, iInciso); 

(我評論了,讓我的編譯錯誤的行) 和錯誤是不同的,不該編譯錯誤它給我的錯誤的問題

Could not load type 'ADODB._Recordset_Deprecated' from assembly 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 

當我去好像這個DLL的元數據。

[Guid("757AC98D-3800-406F-BA47-AEDAF2EBBCDB")] 
    [TypeLibType(2)] 
    [ClassInterface(0)] 
    public class clsdNTCoberturaClass : _clsdNTCobertura, clsdNTCobertura 
    { 
     public clsdNTCoberturaClass(); 

     [DispId(1610809344)] 
     public virtual ADODB._Recordset_Deprecated SelArregloARenovar(string dFecha1, string dFecha2, string strNumOfic, short strCveAge, string strRamo); 
     [DispId(1610809347)] 
     public virtual ADODB._Recordset_Deprecated SelArregloCobertura(string strRamo, string strSubRamo, string strNumOfic, int lCveSol, string strModulSol, int lCveInc); 
     [DispId(1610809348)] 
     public virtual ADODB._Recordset_Deprecated SelArregloCobEst(string strRamo, string strSubRamo, short intCveInc, short intAnio, int lNumRec, string strOficRecl); 
     [DispId(1610809349)] 
     public virtual ADODB._Recordset_Deprecated SelArregloCobEstim(string strRamo, string strSubRamo, short intCveInc, short intAnio, int lNumRec, string strOficRecl); 
     [DispId(1610809346)] 
     public virtual ADODB._Recordset_Deprecated SelArregloNvaCobertura(string strRamo, string strSubRamo, string strNumOfic, int lCveSol, string strModulSol, int lCveInc, short intAnio, string strOficRecl, string intnumrec); 
     [DispId(1610809345)] 
     public virtual ADODB._Recordset_Deprecated SelCobertura(string strRamo, string strSubRamo, string strCveCober); 
     [DispId(1610809350)] 
     public virtual ADODB._Recordset_Deprecated SelEstCobertura(string strRamo, string strSubRamo, short intAnio, string strOficRecl, int lNumRec, short intCveInc, string strCveCober); 
    } 

所以我覺得有一個與輸入步驟出了問題,

人有如何使這個工作,或者還有另一種形式加載從誰註冊的DLL執行方法的想法在COM?

任何幫助將是非常apreciated。

在此先感謝。

回答

4

檢查Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1

警告:這是一個looooooooong後,您的瀏覽器將掛起了一陣。

更新:微軟作出決定,恢復該類型庫和分拆新的界面,看到Windows 8 Developer Preview build contains the complete fix of the ADO typelib issue

+0

感謝您的回答,我會檢查它作爲接受,但因爲它似乎沒有解決這個問題,我不得不重新做DLL到C#代碼,使這個工程。謝謝你的幫助。 –

+0

微軟剛剛發佈了一個解決方案,希望這個解決方案對開發人員和他們的客戶影響最小。 –

+0

謝謝我看到帖子,以及他們至少將其固定在Windows 8中,讓我們等待如果我用VB 6.0 xD獲得另一個項目感謝您的答覆!在微軟發佈後8小時,我看到您的帖子只是忘了感謝你! xD謝謝! –

2

Microsoft Connect有這樣的頁面,包括一些解決辦法的信息。它必須處理對Windows 7 SP1中引入的ADODB的更改。

其中一個解決方法,在這個Microsoft Support Page詳述。

相關問題