Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DllImport如何识别最新的.dll版本?_C#_.net_Winforms_Dllimport - Fatal编程技术网

C# DllImport如何识别最新的.dll版本?

C# DllImport如何识别最新的.dll版本?,c#,.net,winforms,dllimport,C#,.net,Winforms,Dllimport,我有一个winforms应用程序,可以成功调用位于第三方dll中的外部方法。此dll文件位于我的计算机上的任何位置 [DllImport("ext.dll")] public static extern int Print(string cmd); 昨天我从开发ext.dll的公司那里得到了一批,因为打印方法中存在一个内部错误。该批处理包含ext.dll的无错误版本 现在我的问题是:DllImport如何在我的机器上找到这个新的无bug版本,并使用它来代替旧版本? 附加信息:我使用DllImp

我有一个winforms应用程序,可以成功调用位于第三方dll中的外部方法。此dll文件位于我的计算机上的任何位置

[DllImport("ext.dll")]
public static extern int Print(string cmd);
昨天我从开发ext.dll的公司那里得到了一批,因为打印方法中存在一个内部错误。该批处理包含ext.dll的无错误版本

现在我的问题是:DllImport如何在我的机器上找到这个新的无bug版本,并使用它来代替旧版本?
附加信息:我使用DllImport是因为我无法通过VS中的“添加引用”添加dll文件。

p/invoke marshaller调用
LoadLibrary
(或
LoadLibraryEx
)传递您在
DllImport
属性中指定的文件名。这意味着系统将使用搜索引擎搜索DLL。我链接到的文档包含了所有血淋淋的细节。基本上,系统在许多预定义的位置进行搜索,并使用它遇到的第一个包含指定名称文件的位置

那么,关于你的具体问题:

DllImport如何在我的机器上找到这个新的无bug版本,并使用它来代替旧版本


没有。它使用动态链接库搜索顺序。如果恰好找到了DLL的最新版本,那么这就是加载的内容。如果在搜索中首先出现较旧版本的DLL,则将加载该较旧版本。

否则,它将使用搜索算法查找DLL,并加载找到的第一个DLL。没有圣诞老人,请主动删除有缺陷的版本,以便DLL地狱无法为您分配字节。