c# - 使用 .Net 提供额外的 platform.dependent .dll
问题描述
我有一个应用程序(.Net 4.6.1,WPF),它需要生产系统上的特定 .dll(非托管)才能运行。该 DLL 有两个版本(x64 和 x86)。我如何(应该)在我的项目中为不同的平台打包 DLL?
当然,有可能创建两个项目,一个只针对 x64,一个分别针对 x86,但我想避免这种开销。
理想情况下,我正在考虑类似文件夹结构的东西
cwd/
app.exe
component.dll
lib/
x86/
provided.dll
x64/
provided.dll
应用程序在启动时根据运行时平台 (x64/x86) 加载正确的提供的 DLL。
不幸的是,我无法更改应用程序本身的程序集加载(在启动时自动完成)。
关于搜索路径,我检查了 [1],但找不到特定于平台的加载信息。
有没有办法(最佳实践)来实现这一目标?
[1] https://docs.microsoft.com/de-de/windows/desktop/Dlls/dynamic-link-library-search-order
解决方案
不幸的是,我无法更改应用程序本身的程序集加载(在启动时自动完成)。
然后,您将不得不部署应用程序以及适当的 DLL。
您可以提供两个版本的应用程序;一个 32 位x86/provided.dll
版本包含x64/provided.dll
. 然后,用户必须根据他们的 CPU 架构安装适当的版本。
推荐阅读
- sql - SQL 如何使用已创建表中的信息
- codeigniter - Plesk 禁止 403 获取引导样式(nginx)
- python - Flask-admin:ImportError:没有名为 ext.sqlalchemy 的模块
- python - Django的新手。尝试查看有关如何加载 css 文件但不工作的教程
- reactjs - 无法使用 React.js 获取方法连接到 API
- javascript - 我可以在 Javascript 或 Flash 中截取 Web 浏览器外部的屏幕截图吗?
- python - Selenium 无需注销即可导航
- python - 我们可以将 2 个条件放在一个 if 语句中吗?
- r - 绘制(ggplot?)两条曲线之间的平滑+颜色区域
- php - PHP在数组中插入变量,但不能json_encode