2012-11-27 25 views
1

在我的項目我有如何告訴VS複製本地的dll到 「最終目標文件夾」

  • 本地C++ DLL項目(輸出到x64 /)
  • C++/CLI包裝(輸出到x64/)
  • 幾個C#項目(輸出到PROJECTNAME \ BIN \ x64)的

在構建第一DLL被複制到 「64 /」 然後包裝被複制到 「64 /」。在最後階段,wrappper dll被複制到「projectName \ bin \ x64」文件夾,但原始本機dll沒有被複制。

我需要原生的dll也去最後的文件夾,所以我可以運行應用程序,該怎麼做?

我試圖添加「native dll」作爲依賴項,但VS說這是不可能的。

UPD另外,如果我dll的複製自己,然後調試,我不能進入本地的dll,我收到「斷點目前不會被擊中,沒有符號已經加載此文件」的錯誤。所以我認爲這個問題是連接的。我想要複製原生dll,並且希望能夠進行調試。

upd此答案幫助我調試Cannot Debug Unmanaged Dll from C#但是我仍然需要自己複製dll。奇怪的是,每次我建立項目時,我都會警告「native dll」項目已過期。

+0

你可以使用XCOPY作爲生成後步驟? – penguat

+1

@penguat我有nativde dll項目。我有cli包裝。我期望一些簡單的方法將一切都放在一個地方。這是非常常見的問題。在這種情況下,每個人都使用'xcopy'嗎? – javapowered

+0

我認爲每個人都使用構建後步驟。不是每個人,這不是權威,但它可能是實現你想要的最好的文件記錄方式。應該儘快吸引更多權威人士的答覆。 – penguat

回答

3

據我所知,您需要使用後期製作步驟。這裏有幾個例子:

How do I exclude a specific file from my msbuild AfterBuild target

<Target Name="AfterBuild"> 
    <ItemGroup> 
     <BinFiles Include="bin\$(ConfigurationName)\**\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(BinFiles)" DestinationFiles="@(BinFiles->'$(ProjectDir)\relativePathToDirectory" /> 
    </Target> 
+0

每個使用本地dll和cli包裝的人都可以在他們的解決方案中做類似的事情嗎? – javapowered

+0

我對此表示懷疑。例如,您可以將其作爲輸出項目包含在項目中,並且任何不使用MSBuild(http://stackoverflow.com/a/11582380/305256)的人都不太可能這樣做(因爲這是MSBuild的一個特性) – penguat

+0

我已經使用了'PostBuildEvent',它看起來可以正常工作... – javapowered

相關問題