如何告诉VS将本机DLL复制到"final destination folder"



在我的项目中,我有

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

生成时,第一个dll被复制到"x64/"然后将包装复制到"x64/"。在最后阶段,wrapper dll被复制到"projectName\bin\x64"文件夹,但原始的本机dll没有被复制。

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

我尝试添加"本机dll"作为依赖项,但VS说这是不可能的。

upd此外,如果我自己复制dll,然后进行调试,我无法进入本机dll,我会收到"当前不会命中断点。尚未为此文档加载任何符号"错误。所以我认为这些问题是有联系的。我希望本机dll被复制,我希望能够调试。

upd这个答案帮助我从C#调试了"无法调试未管理的Dll",但我仍然需要自己复制Dll。奇怪的是,每次我构建项目时,我都会收到一个警告,"本机dll"项目已经过时了。

据我所知,您需要使用构建后的步骤。以下是几个例子:

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

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

最新更新