0

我有两个带有完整源代码的项目,一个在 C# 中,另一个在 C 中,在一个 VS 2012 解决方案中。C# 代码通过 PInvoke 调用 C .dll。

我设置了对解决方案级别的依赖项,以告诉解决方案在构建 C# 项目之前构建 C 项目。

理想情况下,我希望将生成的 C .dll 放在我正在执行的 C# dll 旁边,因此我会在我的DllImport. 但是,这并不容易,因为使用我的 C# 项目的另一个项目不会复制 C .dll。如果我的所有项目都是 .NET,则不会存在此问题,因为 MS Build 会将 .dll 复制到主机。

是否有任何我缺少的最佳实践或神奇的 VS 选项,以使 C .dll 以与其他 .NET 程序集相同的方式被复制?

此问题被标记为重复,但事实并非如此。提到的问题:

  • 它在谈论第 3 方 .dll,这是关于同一解决方案中的自己的项目。
  • 该问题的公认答案没有考虑将调试复制到调试和发布到发布。
  • 接受的答案没有显示如何复制依赖链(C# -> C# -> C )。

我刚刚找到了一个受https://stackoverflow.com/a/13944692/157017启发的解决方案,它解决了这种特定情况。

  <ItemGroup>
    <Content Include="$(SolutionDir)$(Platform)\$(Configuration)\MyCProject.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
4

0 回答 0