1

在我的项目中,我有

  • 本机 c++ dll 项目(输出到 x64/)
  • c++/cli 包装器(输出到 x64/)
  • 几个 c# 项目(输出到 projectName\bin\x64)

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

我需要本机 dll 也转到最终文件夹,这样我就可以运行应用程序,该怎么做?

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

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

upd这个答案帮助我从 C# 调试无法调试非托管 Dll,但是我仍然必须自己复制 dll。奇怪的是,每次我构建项目时,我都会收到“本机 dll”项目已过时的警告。

4

1 回答 1

3

据我所知,您需要使用构建后步骤。这里有几个例子:

如何从我的 msbuild AfterBuild 目标中排除特定文件

<Target Name="AfterBuild">
    <ItemGroup>
      <BinFiles Include="bin\$(ConfigurationName)\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(BinFiles)" DestinationFiles="@(BinFiles->'$(ProjectDir)\relativePathToDirectory" />
  </Target>
于 2013-03-05T15:01:51.503 回答