如何解决来自应用程序子文件夹的本机NuGet依赖关系如何解决?
也许可以通过一个示例更好地询问这个问题,所以请看一下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 举报,一经查实,本站将立刻删除。