在Visual Studio中指定非.NET依赖项

时间:2020-03-06 14:39:09  来源:igfitidea点击:

我正在使用P / Invoke从我的项目中调用非.NET dll,这意味着.dll必须始终存在于.exe目录中。

有没有办法告诉Visual Studio这种依赖性,以便在编译时它将自动将.dll复制到输出目录,并在安装程序中自动包括.dll?还是我必须手动执行此操作?

解决方案

我们可以简单地将.DLL添加到项目中。

选择该文件的"属性"窗格,然后将"构建操作"设置为"内容",并将"复制到输出目录"设置为"如果更新则复制"。

我们可以将此文件复制/链接到项目,然后在属性窗口中将"生成操作"设置为"无",将"复制到输出目录"设置为"如果更新则复制"或者"始终复制"。

或者,我们可以使用"构建前事件"和"构建后事件",在其中可以指定任何批处理脚本。

我更喜欢第二种选择,因为这种方式比第一种更灵活。

我们也可以修改MSBuild文件并添加用于复制文件的任务。

我认为仅向项目中添加.DLL的一个问题是我们可能需要不同版本的DLL才能进行调试和发布。我们可能会认为可以将DLL的调试版本和发行版都添加到文件中,并且可以根据配置排除不适当的版本,但是我找不到解决方法。我使用的是Visual Studio2010. 我很肯定这在VS6的早期是有效的。