安德斯的回答是一个很好的解决方案,但就我而言:
- 我不喜欢将二进制文件保存在源代码树中的想法
- 许多 dll 没有特定版本,它们会定期更新。
我以某种方式结束了这个解决方案:
首先,我将全局 VC++ 属性页包含在测试项目中。这必须通过<Project>
在 .csproj 顶部的标记下添加此指令来手动完成:
<Import Project="$(UserProfile)\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props" />
我现在可以访问在我的 C++ 环境中定义 dll 路径的属性/宏。
我那时
- 在测试项目中添加了一个新的子文件夹,比如说
"NativeDlls"
- 将所需的 dll 作为链接添加到 NativeDlls 文件夹中
- 链接是绝对的,但可以用上面包含的属性表中的宏替换:
<Content Include="$(MyLibLocation)\GDAL18BIN\gdal18.dll">
<Link>NativeDlls\mylib.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
然后 dll 就可以部署了:
[TestMethod]
[DeploymentItem(@"NativeDlls")]
public void TestSomeStuff()
{
}
而且,正如 Anders 所说:剩下的工作是设置调试/发布和 32/64 条件。