问题描述
也许可以通过一个示例更好地询问这个问题,所以请看一下Confluent.Kafka NuGet软件包:
此软件包包含本机依赖项(通过librdkafka.redist),当将其安装在使用中的项目中时,这些依赖项会位于项目输出目录的子文件夹中:
在运行时找到了这些程序集,并且通过使用Process Monitor似乎可以立即找到它们(即,在Windows' DLL search order之后,首先要在其他地方找到它们),应用程序过程将直接转到{ {1}}。
当我查看Confluent.Kafka的source code时,我看不出有什么特别的方法可以解决此子文件夹中的本机依赖性(C:\Somewhere\NativeDependencyExample\bin\Debug\librdkafka\x64\librdkafka.dll
只是通过模块名称来完成,表示必须使用正常的DLL搜索顺序来找到它。)
那么,有谁知道.NET Framework或Windows是否使用某些其他约定来解析此类本机依赖关系?搜索所有子文件夹的情况并不简单,因为其他应用程序子文件夹中的其他本机依赖项无法通过这种方式找到。我也很确定我已经见过其他具有本地依赖项的NuGet程序包,它们的工作方式与Confluent.Kafka类似。
是不是因为librdkafka子文件夹与DllImport
加载的模块具有相同的名称?是否按惯例还解析了x64或x86文件夹中的DLL?在某处有记录吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)