首页 > 解决方案 > 使用 .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

标签: c#.netwpfdll

解决方案


不幸的是,我无法更改应用程序本身的程序集加载(在启动时自动完成)。

然后,您将不得不部署应用程序以及适当的 DLL。

您可以提供两个版本的应用程序;一个 32 位x86/provided.dll版本包含x64/provided.dll. 然后,用户必须根据他们的 CPU 架构安装适当的版本。


推荐阅读