我有一个编码的ui测试,我想用批处理启动它,它是一个.dll文件。
我从批处理文件调用它的原因是,在执行此测试之前,必须重新启动服务器。
这只是一个简单的call test.dll
还是我必须做其他事情?
更新 找到的代码
Playback.Initialize();
TestProject.CodedUITest1 coded = new TestProject.CodedUITest1();
coded.CodedUITestMethod1();
Playback.Cleanup();
Take from Here,它缺少两个来自私有程序集的引用插件:
- Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll
- Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll
希望这能帮助其他希望这样做的人
不能像运行exe一样运行Dll文件。Dll包含一个程序要使用的代码,这意味着一个代码源可以被多个程序使用,这样可以避免重复代码。
通常Dll会有文档化的函数,你可以通过程序调用,除非你自己构建它,在这种情况下你会知道:)
试着找到使用Dll的程序并调用它,或者找到它的文档并以@PA的身份从rundll32
运行函数。建议。
DLL是动态库,需要从应用程序链接和调用。每个DLL都有自己的导出接口,或者从外部可执行文件调用的入口点集合,或者可以从另一个DLL调用。
Windows提供了一组调用来帮助调用程序加载、检测入口点和卸载DLL。除了这些有限的通用功能之外,在编程模型的几乎每一个方面,使用DLL的方式、调用约定、传递参数的方式、参数的类型、返回数据的方式、同步、通知事件、中断、多线程的方式都有无穷无尽的组合。
话虽如此,您的DLL可能会被从某些特定的应用程序调用,因此可能遵循和严格定义良好的API。其中一种类型的DLL是Windows系统DLL,旨在与rundll可执行程序一起运行。rundll32.exe
是Windows系统的可执行文件,它从一个明确编程为以这种方式调用的dll中启动和调用封装在.dll文件中的函数。
要在TEST.DLL中调用TestFunction,将1234作为参数传递,您需要使用
RUNDLL32 TEST.DLL, TestFunction 1234
Rundll将为您执行以下任务
- 通过LoadLibrary()加载TEST.DLL
- 通过GetProcAddress()对TestFunction函数进行寻址
- 调用TestFunction函数,传递命令行的其余部分
- 卸载DLL并退出