我有两个带有完整源代码的项目,一个在 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>