문제

QTP에서 C# DLL을 호출하려고합니다 (vbscript 사용). 나는 성공하지 못한 많은 것들을 시도했다.

  • Visual Studio 2010
  • c# class libary 만들기 (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에 관계없이 .VBS 파일에서 C# DLL을 호출하는 방법에 대한 통찰력에 크게 감사드립니다.

도움이 되었습니까?

해결책

다음을 수행 하여이 작업을 수행 할 수있었습니다.

VS 2010에서 새로운 C# DLL을 만듭니다.

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을 유지 하고이 솔루션을 이끌 수 있다고 생각했습니다. 잘 했어!

편집하다:

단계를 자세히 설명하고 추가 정보를 제공하기 위해 블로그 게시물을 만들었습니다.

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

다른 팁

마크가 말했듯이, 나는 그것이 대답을 할 가치가 있다고 생각합니다. COM 메커니즘을 통해 DLL을 사용할 수 있는지 확인하면 스크립트가 CreateObject.

COM Interop에 .NET 어셈블리를 등록하는 방법

당신의 기능은 정적입니다. 정적 클래스 멤버는 인터페이스 멤버와 일치 할 수 없으며 .NET 인터페이스를 구현할 수 없다면 COM 인터페이스를 구현하지는 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top