문제
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.
당신의 기능은 정적입니다. 정적 클래스 멤버는 인터페이스 멤버와 일치 할 수 없으며 .NET 인터페이스를 구현할 수 없다면 COM 인터페이스를 구현하지는 않습니다.
제휴하지 않습니다 StackOverflow