将非托管DLL部署到输出目录

时间:2012-05-01 20:31:52

标签: .net deployment msbuild unmanagedresources

我正在尝试组织我的VS 2010解决方案。阻碍我的一个领域是使用非托管DLL。我无法将它们添加为引用,因为DLL是不受管理的。之前的方法是在前/后构建事件期间将DLL从“lib”文件夹中复制到输出文件夹。这样做的缺点是每次构建都会发生不必要的复制,而且清理操作也从未从输出文件夹中删除DLL。

我理想的解决方案是将DLL整合到VS lib文件夹中,并使用“Copy If Newer”功能。但是,VS在输出文件夹中创建一个lib文件夹并将DLL放在那里。请注意,我不希望将DLL放在项目树的顶层。有很多DLL,这似乎污染了项目。

1 个答案:

答案 0 :(得分:1)

我会回到发布构建步骤,但使用xcopy /d(仅在更新时复制),并使用类似How to create custom clean (post-clean) event in Visual Studio 2008?的步骤来实现自定义清理。

您可以通过在每种情况下获取列表并在其上执行来避免重复的文件列表。

预构建事件只是批处理脚本

并且您可以使用MSBUILD批处理来创建清理步骤的列表。

如果您愿意,可以在msbuild脚本中编写一个beforecompile步骤,该步骤将文件从源复制到目标而不是VS中的预构建步骤。