![](/img/trans.png)
[英]Cannot run application installed using Setup Project in Visual Studio 17
[英]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);
重點放在“DLLImport”功能的使用上。 為了訪問DLL文件,我在解決方案路徑中名為Library的文件夾中創建了然后添加了命令
copy $(SolutionDir)Library\LJV7_IF.dll $(TargetDir)LJV7_IF.dll
這樣就可以在成功構建后將 DLL 復制到 bin 文件夾中。 因此,該應用程序目前可以正常工作。
使用 Visual Studio 中的內置發布選項發布應用程序時
生成的安裝程序已安裝,但 DLL“LJV7_IF.dll”未復制到應用程序輸出。 運行安裝的應用程序時,無法定位 DLL 文件。 這是我收到的錯誤消息,
錯誤消息指定應用程序找不到 DLL 文件。
問題: 是否有其他方法可以引用 DLL 文件,以便在創建可執行文件時正確定位 DLL?
@Hans Passant 提出的解決方案適用於這個問題並且已經解決。 作為回顧,引用!!
“只需使用 Project > Add Existing Item 將其添加到項目中。確保其 Build Action 屬性為“Content”(默認情況下),以便安裝程序項目知道它也需要部署。如果將其設置為 Copy to Output將目錄屬性設置為“如果更新則復制”,則您不再需要后期構建事件。或者通過單擊“應用程序文件”按鈕手動執行此操作。” Curtesy of – 漢斯·帕桑特
對於 Visual Studio 2019,我發現我的應用程序有兩種方法可以訪問/使用第三方供應商的 DLL:
將第三方供應商的 DLL 安裝目錄添加到 Windows 系統Path
環境變量(我的首選選擇,因為它最接近地復制了我的應用程序在客戶端系統上的安裝方式)
將第三方 DLL 復制到我的應用程序作為 Visual Studio 2019 Post-Build Event
的目錄中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.