我有一個依賴外部DLL文件的Visual Studio C++項目。我如何讓Visual Studio在生成項目時自動將此DLL文件複製到輸出目錄(調試/發佈)中?如何使Visual Studio將DLL文件複製到輸出目錄?
回答
在項目中使用後構建操作,並添加命令以複製有問題的DLL。生成後操作被編寫爲批處理腳本。
輸出目錄可以引用爲$(OutDir)
。項目目錄爲$(ProjDir)
。嘗試在適用的情況下使用相對路徑,以便可以複製或移動項目文件夾而不會中斷生成後操作。
(這個答案只適用於C#不是C++,對不起,我誤解了原來的問題)
我已經通過DLL地獄這樣了之前。我的最終解決方案是將非託管DLL作爲二進制資源存儲在託管DLL中,並在程序啓動時將它們解壓縮到一個臨時文件夾中,並在處置時將其刪除。
這應該是.NET或PInvoke的基礎設施的一部分,因爲它是非常有用....它使你的託管DLL易於管理,無論是使用Xcopy的或作爲一個更大的Visual Studio解決方案的項目引用。一旦你這樣做了,你不必擔心後期構建事件。
UPDATE:
我在另一個答案張貼在這裏的代碼https://stackoverflow.com/a/11038376/364818
我同意,它應該是框架的一部分(靜態鏈接dll等等) - 值得注意的是,將dll作爲資源存儲,然後在運行時解壓縮可能會在某些企業環境中引發問題(特別是如果它們具有相當主動的防病毒軟件)。 – BrainSlugs83 2016-06-11 01:39:32
在評論部分的細節上面試圖從一個C++項目輸出的dll複製到時並沒有爲我(VS 2013)工作另一個C#項目的釋放和調試文件夾位於相同的解決方案中。
我不得不添加以下後生成作用(右鍵單擊具有.DLL輸出的項目),那麼屬性 - >配置屬性 - >生成事件 - >生成後事件 - >命令行
現在我將這兩行輸出的dll複製到兩個文件夾:
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Release
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Debug
$(OUTDIR)竟然是在VS2013的相對路徑,所以我不得不把它與$結合(PROJECTDIR )以實現期望的效果:
xcopy /y /d "$(ProjectDir)External\*.dll" "$(ProjectDir)$(OutDir)"
順便說一句,您可以通過在開頭添加'echo'來輕鬆地調試腳本,並在構建輸出窗口中觀察擴展文本。
'$(OutDir)'是我的VS2013社區更新4中的絕對路徑... – 2015-03-03 02:10:26
$(TargetDir)可以替換$(ProjectDir)$(OutDir),因爲它是兩者的組合。 – person27 2017-03-30 00:27:19
在沒有/ d的情況下,它拋出了Access Denied錯誤。但是根據文檔的/ d是針對日期的。不確定連接是什麼。 – 2017-12-18 22:23:18
- 1. 如何將虛擬目錄複製到visual studio中輸出?
- 2. Visual Studio 2017 C++項目將文本文件複製到輸出目錄
- 3. 使用Visual Studio 2015,C++項目沒有「複製到輸出目錄」的DLL
- 4. visual studio複製dll refrences到輸出文件夾
- 5. 創建將文件複製到輸出目錄的Visual Studio「add-on」
- 6. qmake:如何將.dll/.so's複製到輸出目錄?
- 7. 找出原因的Visual Studio決定DLL文件複製到bin目錄
- 8. 防止dll的被複制到輸出文件夾在Visual Studio陪xml文件
- 9. Visual Studio 2010將內容文件複製到自定義目錄
- 10. 在Visual Studio 2013中將文件複製到版本目錄
- 11. Visual Studio C++ - 「複製到輸出目錄」缺少
- 12. 複製到輸出目錄的圖像不工作+ Visual Studio 2010
- 13. Visual Studio 2010 C++ DLL項目 - 無輸出DLL文件!
- 14. 有VS自動將DLL複製到可執行輸出目錄
- 15. 將所有輸出dll放在Visual Studio的公共目錄中
- 16. 如何將文件中的數據複製到目錄中或將命令輸出複製到目錄
- 17. Visual Studio - 將「內容」文件發送到輸出目錄而不是子目錄?
- 18. Visual Studio:所需的dll/pdb文件未複製到正確的目錄
- 19. 如何讓Visual Studio將特定文件複製到發佈目錄?
- 20. 如何設置Visual Studio將所需的DLL文件複製到發行版本的發佈目錄中?
- 21. C++將DLL從根目錄移出到子文件夾中,visual studio
- 22. 強制VS 2010將dll文件複製到解決方案中未被項目「使用」的輸出目錄
- 23. QTCreator將文件複製到帶有INSTALLS的輸出目錄
- 24. 使用Visual Studio項目模板將文件複製到項目文件夾
- 25. 的Visual Studio:複製相關的DLL文件到目標文件夾
- 26. 複製文件到發佈目錄visual studio
- 27. 使用Visual Studio 2013(WinRT應用程序)複製到AppX輸出目錄?
- 28. 如何將文件從目錄複製到iphone文檔目錄
- 29. 如何將dll文件複製到Qt中不使用QtCreator的輸出目錄中?
- 30. Visual Studio 2010「添加引用」正在將dll複製到bin目錄中?
還值得指出的是,他可以通過Project> Properties> Build Events> Post-Build Event來設置構建後事件。 – 2009-11-21 17:23:41
作品! :) 謝謝! – Mat 2009-11-21 17:27:02
示例:http://eyeung003.blogspot.com/2009/11/visual-studio-post-build-event-to-copy.html – AntonioR 2010-11-09 12:52:47