Вызов C # dll в VBScript - PullRequest
       20

Вызов C # dll в VBScript

5 голосов
/ 21 сентября 2009

Я пытаюсь вызвать C # dll из QTP (использует vbscript). Я попробовал несколько вещей без успеха:

  • Visual Studio 2010
  • Создать библиотеку класса C # (st.dll)

код:

using System;
using System.Collections.Generic;
using System.Text;   

namespace st
{
    public class Class1
    {
        public static int GetValue()
        {
            return 34;
        }
    }
}
  • regasm /codebase st.dll
    • терпит неудачу ', потому что это не допустимая сборка .NET'

В QTP / vbscript я пробовал

  • extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
    • Возвращает сообщение: «Недопустимый вызов процедуры или аргумент»

Независимо от QTP, я был бы очень признателен за понимание того, как вызывать c # dll из файла .vbs.

Ответы [ 3 ]

8 голосов
/ 21 сентября 2009

Я смог заставить это работать, выполнив следующие действия:

Создание новой библиотеки C # в VS 2010.

namespace st4
{
    public class st4_functions
    {
        public int GetValue()
        {
            return 34;
        }
    }
}

В QTP я добавил следующие строки:

Set obj = DotNetFactory.CreateInstance("st4.st4_functions", "c:\\st4.dll")
MsgBox obj.GetValue()

Спасибо всем, кто откликнулся на мою проблему. Хотя я не принимал решение COM, я подумал, что могу остаться с .NET, и привел к этому решению. Хорошая работа всем!

EDIT:

Я создал пост в блоге, чтобы подробно описать шаги и предоставить дополнительную информацию:

http://www.solutionmaniacs.com/blog/2012/5/29/qtp-calling-c-dll-in-vbscript.html

1 голос
/ 21 сентября 2009

Ваша функция статична. Статические члены класса не могут быть сопоставлены с элементами интерфейса, и если он не может реализовать интерфейс .NET, то он определенно не будет реализовывать интерфейс COM.

1 голос
/ 21 сентября 2009

Как сказал Марк, но я думаю, что это заслуживает ответа. Если вы гарантируете, что ваша dll будет доступна через COM-механику, ваш скрипт должен иметь возможность вызывать ее с такими вещами, как CreateObject .

Как зарегистрировать сборку .NET для COM-взаимодействия

...