簡體   English   中英

使用 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

構建事件.png

這樣就可以在成功構建后將 DLL 復制到 bin 文件夾中。 因此,該應用程序目前可以正常工作。

使用 Visual Studio 中的內置發布選項發布應用程序時

發布頁面.png 的屏幕截圖

生成的安裝程序已安裝,但 DLL“LJV7_IF.dll”未復制到應用程序輸出。 運行安裝的應用程序時,無法定位 DLL 文件。 這是我收到的錯誤消息,

錯誤輸出.png .

錯誤消息指定應用程序找不到 DLL 文件。

問題: 是否有其他方法可以引用 DLL 文件,以便在創建可執行文件時正確定位 DLL?

@Hans Passant 提出的解決方案適用於這個問題並且已經解決。 作為回顧,引用!!

“只需使用 Project > Add Existing Item 將其添加到項目中。確保其 Build Action 屬性為“Content”(默認情況下),以便安裝程序項目知道它也需要部署。如果將其設置為 Copy to Output將目錄屬性設置為“如果更新則復制”,則您不再需要后期構建事件。或者通過單擊“應用程序文件”按鈕手動執行此操作。” Curtesy of – 漢斯·帕桑特

你可以試試這個而不是手動復制嗎?

打開項目屬性,選擇要更改的配置(第 1 步)(發布時使用的配置)。

根據需要更改輸出路徑(步驟 2)。

項目屬性

對於 Visual Studio 2019,我發現我的應用程序有兩種方法可以訪問/使用第三方供應商的 DLL:

  1. 將第三方供應商的 DLL 安裝目錄添加到 Windows 系統Path環境變量(我的首選選擇,因為它最接近地復制了我的應用程序在客戶端系統上的安裝方式)

  2. 將第三方 DLL 復制到我的應用程序作為 Visual Studio 2019 Post-Build Event的目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM