使用 Visual Studio 的内置发布功能生成应用程序设置时无法找到 DLL 文件

DLL file cannot be located when application setup is generated using the in-built Publish feature of Visual Studio

我已经成功地用 C# 构建了一个应用程序来连接高速测量传感器。该应用程序使用第三方 DLL 文件来连接硬件供应商提供的外部硬件。下面显示了有关如何在 DLL 文件中连接 类 的示例代码片段;

[DllImport("LJV7_IF.dll")]
    internal static extern int LJV7IF_Initialize();

    [DllImport("LJV7_IF.dll")]
    internal static extern int LJV7IF_Finalize();

    [DllImport("LJV7_IF.dll")]
    internal static extern uint LJV7IF_GetVersion();

    [DllImport("LJV7_IF.dll")]
    internal static extern int LJV7IF_UsbOpen(int lDeviceId);

    [DllImport("LJV7_IF.dll")]
    internal static extern int LJV7IF_EthernetOpen(int lDeviceId, ref LJV7IF_ETHERNET_CONFIG ethernetConfig);

重点放在“DL​​LImport”函数的使用上。为了访问 DLL 文件,我在解决方案路径中创建了名为 Library 的文件夹,然后添加了命令

copy $(SolutionDir)Library\LJV7_IF.dll $(TargetDir)LJV7_IF.dll

这样构建成功后可以将DLL复制到bin文件夹中。因此,该应用程序目前可以正常工作。

使用 Visual Studio

中的内置发布选项发布应用程序时

生成的安装程序安装但 DLL“LJV7_IF.dll”未复制到应用程序输出。当安装的应用程序为运行时,找不到DLL文件。这是我收到的错误消息,

.

错误消息指出应用程序找不到 DLL 文件。

问题:是否有其他方法来引用 DLL 文件,以便在创建可执行文件时正确定位 DLL?

你能试试这个而不是手动复制吗?

打开项目属性,选择要更改的配置(第 1 步)(发布时使用的配置)。

根据需要更改输出路径(第 2 步)。

@Hans Passant 给出的解决方案适用于这个问题,已经解决。作为回顾,引用!!

“只需使用项目 > 添加现有项将其添加到项目中。确保其生成操作 属性 为“内容”(默认情况下),以便安装程序项目知道它也需要部署. 如果您将它复制到输出目录 属性 设置为“如果更新则复制”,那么您不再需要构建后事件。或者通过单击“应用程序文件”按钮手动执行。”感谢 – Hans Passant

对于 Visual Studio 2019,我发现我的应用程序有两种方法能够 access/use 第三方供应商的 DLL:

  1. 将安装第三方供应商的 DLL 的目录添加到 Windows 系统 Path 环境变量(我的首选,因为它最接近地复制了我的应用程序很可能安装在客户端的系统上)

  2. 将第三方 DLL 复制到我的应用程序构建目录中作为 Visual Studio 2019 Post-Build Event.