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

Wal*_*ter 3 .net c# dllimport winforms

我有一个winforms应用程序,可以成功调用位于第三方DLL的外部方法.这个DLL文件位于我的机器上的任何位置.

[DllImport("ext.dll")]
public static extern int Print(string cmd);
Run Code Online (Sandbox Code Playgroud)

昨天我从开发该ext.dll的公司得到一批,因为Print-Method中存在内部错误.该批处理包含ext.dll的无错误版本.

现在我的问题是:DllImport如何在我的机器上的任何位置找到这个新的无错误版本并使用它而不是旧版本?附加信息:我使用DllImport,因为我无法通过VS中的"添加引用"添加dll文件.

Dav*_*nan 6

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

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

DllImport如何在我的机器上的任何位置找到这个新的无错误版本并使用它而不是旧版本?

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