如何以编程方式检查C DLL文件和C#DLL文件以获取对调试DLLS的引用,以自动执行测试过程

如何以编程方式检查C DLL文件和C#DLL文件以获取对调试DLLS的引用,以自动执行测试过程,第1张

概述我遇到过这个问题太多次了,需要这个是一个自动化的方法: 我有多个DLL文件,不断建立/更改多个项目使用. 我创建了一个C#应用程序,它可以检测DLL文件是否存在,如果不存在则会警告运算符并杀死程序.在这个C#应用程序中,我希望它也检查以确定它是否是“调试”版本 – 换句话说,如果它在最终用户计算机上运行它会崩溃. 现在我一直在寻找高低,找到了一些可能的解决方案,但它们都落空了. Assembly. 我遇到过这个问题太多次了,需要这个是一个自动化的方法:

我有多个DLL文件,不断建立/更改多个项目使用.

我创建了一个C#应用程序,它可以检测DLL文件是否存在,如果不存在则会警告运算符并杀死程序.在这个C#应用程序中,我希望它也检查以确定它是否是“调试”版本 – 换句话说,如果它在最终用户计算机上运行它会崩溃.

现在我一直在寻找高低,找到了一些可能的解决方案,但它们都落空了.

Assembly.LoadFrom(string)不适用于非托管代码.我可以用它来测试托管的DLL文件,而不是C文件.

我想我可以使用Dependency Walker或类似的程序在我的应用程序中运行给我汇编引用的数据,不幸的是,depends.exe控制台只输出到一个文件(然后我必须在每个文件中读取并解析它为我的数据(非常密集加上我必须在我的项目中包含depends.exe和DLL文件)),此外,它似乎没有输出我真正想要的数据(或至少我不能做它).

也尝试了dumpbin,但我似乎无法让它在我的机器上运行.

我还发现了一些本应给我Dependency Walker源代码的链接.不幸的是他们都死了.我不认为这是一件难以做到的事情,但无论出于何种原因,我都很难弄清楚如何实现自动化.

一些对我有帮助的源链接,但它们都没有解决非托管程序集数据的问题.

> Listing Referenced Assemblies
> How to automate integration testing?(堆栈溢出)
> Determining if a .NET Assembly is compiled debug or not
> How to tell if a .NET Assembly is debug or release
> Programmatically detecting Release/Debug mode (.NET)(堆栈溢出)
> How do I detect the DLLs required by an application?(堆栈溢出)
> How to Programmatically Detect if an Assembly is Compiled in Debug or Release mode

解决方法 如果您知道所有DLL的名称(例如,因为您运行了Dependency Walker),您可以使用Loadlibrary来检查非托管DLL.

[Dllimport("kernel32.dll")]static extern IntPtr Loadlibrary(string dllToload);[Dllimport("kernel32.dll")]static extern IntPtr LoadlibraryEx(string lpfilename,IntPtr hfile,uint DWFlags);const UInt32 DONT_RESolVE_DLL_REFERENCES = 0x00000001;const UInt32 LOAD_liBRARY_AS_DATAfile = 0x00000002;const UInt32 LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008;[Dllimport("kernel32.dll")]static extern bool Freelibrary(IntPtr hModule);[Dllimport("kernel32.dll")]static extern UInt32 GetLastError();voID CheckUnmanagedDll(string Dllname){    IntPtr hModule = Loadlibrary(Dllname);    if (hModule.Equals(IntPtr.Zero))        MessageBox.Show("Can't find " + Dllname);     Freelibrary(hModule); }
总结

以上是内存溢出为你收集整理的如何以编程方式检查C DLL文件和C#DLL文件以获取对调试DLLS的引用,以自动执行测试过程全部内容,希望文章能够帮你解决如何以编程方式检查C DLL文件和C#DLL文件以获取对调试DLLS的引用,以自动执行测试过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存