2011-02-10 38 views
10

我意識到這個問題以前有人問 - 但沒有一個答案適用於我的具體情況:的Visual Studio:複製相關的DLL文件到目標文件夾

  • 我有一個包含本地C溶液++ EXE項目,而這又取決於40多個本地C++ DLL項目(在相同的解決方案中)。

  • 的EXE項目具有通常的調試推出(和資料)構型,但由於它們相同的源代碼庫是用來建立三種不同的應用程序(比如A1A2A3)。另外,它的目標是x32和x64,因此總共有3 x 3 x 2 = 18個項目配置。

  • 的DLL項目由所有三個目標應用程序共享,因此,只有3有(調試推出資料)次2(X32,X64)= 6級的配置。

  • 由於EXE項目依賴於DLL,所以無論何時修改,它都需要將DLL項目的相關輸出複製到其目標文件夾(或其子文件夾)。

你將如何處理DLL的更新?

  • 每個DLL項目生成後動作不工作(井),因爲它必須將DLL複製到的A1A2A3相關的輸出文件夾。輸出文件夾中的任何更改都會導致必須修改50個DLL項目中的每個項目中的生成後操作。

  • 我目前將DLL本身作爲項目項添加到EXE項目中,並配置了一個自定義構建工具將其複製到輸出文件夾。但是這需要我添加每個DLL 6次,所以我最終得到了6 x 50 = 300個DLL!

我真的需要的東西就像是複製本地選項,不幸的是只能運行程序集。您是否建議簡化此構建設置?

回答

5

我會做的是把所有的DLL放在一個文件夾(特定於調試/發佈等),並將它們複製回EXE的相應輸出文件夾。

這隻能在兩個動作來完成:

  • 將所有的DLL輸出目錄到文件夾像$(ConfigurationName)_$(PlatformShortName)

    • 選擇所有DLL項目
    • 右擊 - > propoerties
    • 選擇所有配置和所有平臺
    • 設置outp UT DIR
  • 添加一個生成後行動的EXE工程,通用於所有配置,副本$(ConfigurationName)_$(PlatformShortName)\*.dll$(TargetDir)

編輯

有一個問題在第二因爲你的EXE的$(ConfigurationName)與你的DLL項目不一樣。不知道,但也許你可以有一種方法來推斷相應的配置,以便爲所有18個配置仍然有一個後期構建事件。它可以是一個新的SO問題:)

+0

非常好!爲什麼我以前沒有考慮過這個問題? – 2011-02-10 11:02:46

相關問題