如何告诉VS将本机dll复制到“最终目标文件夹”

时间:2012-11-27 17:31:11

标签: build visual-studio-2012

在我的项目中我有

  • native c ++ dll project(输出到x64 /)
  • c ++ / cli wrapper(输出到x64 /)
  • 几个c#项目(输出到projectName \ bin \ x64)

建立第一个dll时复制到“x64 /” 然后将包装器复制到“x64 /”。在最后阶段,wrappper dll被复制到“projectName \ bin \ x64”文件夹,但原始的本机dll没有被复制。

我需要原生dll也去最后的文件夹,所以我可以运行应用程序,怎么做?

我曾尝试添加“native dll”作为依赖项,但VS表示这是不可能的。

upd 此外,如果我自己复制dll然后调试我无法进入本机dll,我收到“断点当前不会被命中。没有为此文档加载符号”错误。所以我认为这个问题是相互关联的。我希望复制本机DLL,我希望能够进行调试。

upd 这个答案帮助我调试Cannot Debug Unmanaged Dll from C#但是我仍然需要自己复制dll。什么是奇怪的,因为每次我建立项目时都会发出“本机dll”项目过时的警告。

1 个答案:

答案 0 :(得分: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>