Не удалось загрузить тип "ADODB._Recordset_Deprecated" из сборки "ADODB, версия = 7.0.3300.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a ' - PullRequest
2 голосов
/ 28 июля 2011

Слушай, я сталкиваюсь с проблемой, это начало вызывать у меня головную боль, потому что я смотрю и смотрю и все еще не удача.

Мне нужно выполнить метод DLL из C #, эта DLL была создана 4 года назад в VB 6.0 и зарегистрирована в COM. Он использует ADOB.Recordset в качестве возвращаемого типа метода, который я должен выполнить (исходный код отсутствует: S)

Я искал, как загрузить и выполнить эту DLL.

У меня были проблемы с первой загрузкой, я не мог загрузить его с помощью Server.CreateObject, Assembly.Load, Assembly.LoadFrom, поэтому я попытался добавить его из ссылок COM и Visual Studio импортировал его в папку Bin с именем Interops. [Имя Dll]

Когда вы пытаетесь его использовать, выдает ошибку компиляции:

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

Параметры верны, в пределах своего типа и всего. Довольно уверен в этом

Итак, я попытался выполнить его с помощью Reflection, это код:

 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?

Любая помощь будет по-настоящему оценена.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 28 июля 2011

Проверка Срочные изменения в компонентах MDAC ADODB COM в Windows 7 с пакетом обновления 1

Предупреждение: это сообщение ооооооооооооооооооооооооооакое браузер будет зависать некоторое время.* Обновление: Microsoft приняла решение вернуть обратно библиотеку типов и выделить новые интерфейсы, см. Сборка Windows 8 Developer Preview содержит полное исправление проблемы ADO typelib

2 голосов
/ 28 июля 2011

В Microsoft Connect есть страница, содержащая некоторые сведения об обходном пути. Это связано с критическими изменениями в ADODB, введенными в Windows 7 SP1.

Один из обходных путей подробно описан на этой странице поддержки Microsoft .

...