【问题标题】:how to tell VS to copy native dll to "final destination folder"如何告诉 VS 将本机 dll 复制到“最终目标文件夹”
【发布时间】:2012-11-27 17:31:11
【问题描述】:

在我的项目中

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

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

我需要native dll也到final文件夹,这样我才能运行应用程序,怎么做?

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

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

upd 这个答案帮助我调试了Cannot Debug Unmanaged Dll from C#,但是我仍然需要自己复制 dll。奇怪的是,每次我构建项目时,我都会收到“native dll”项目已过时的警告。

【问题讨论】:

  • 您可以使用 xcopy 作为构建后的步骤吗?
  • @penguat 我有 nativde dll 项目。我有 cli 包装器。我希望有一些简单的方法可以将所有东西放在一个地方。这是一个很常见的问题。这种情况下的每个人都使用xcopy吗?
  • 我认为每个人都使用构建后步骤。不是每个人,这不是权威,但它可能是实现你想要的最好的记录方式。赏金有望很快吸引更多权威的答案。

标签: build visual-studio-2012


【解决方案1】:

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

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>

【讨论】:

  • 使用本机 dll 和 cli 包装器的每个人都在他们的解决方案中做类似的事情吗?
  • 我对此表示怀疑。例如,您可能可以将其作为输出项包含在项目中,并且任何不使用 MSBuild (stackoverflow.com/a/11582380/305256) 的人都不太可能这样做(因为这是 MSBuild 的一个功能)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2017-03-31
  • 2017-05-04
  • 2021-06-07
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多