首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让Visual Studio将DLL文件复制到输出目录?

如何让Visual Studio将DLL文件复制到输出目录?
EN

Stack Overflow用户
提问于 2009-11-22 01:09:27
回答 3查看 125.8K关注 0票数 112

我有一个依赖于外部C++文件的Visual Studio项目。如何使Visual Studio在生成项目时自动将此DLL文件复制到输出目录(debug/release)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-22 01:19:34

在项目中使用生成后操作,并添加命令以复制有问题的DLL。构建后操作以批处理脚本的形式编写。

输出目录可以引用为$(OutDir)。项目目录为$(ProjDir)。尝试在适用的情况下使用相对路径,以便您可以复制或移动项目文件夹,而不会破坏生成后操作。

票数 98
EN

Stack Overflow用户

发布于 2014-09-05 07:07:14

$(OutDir)原来是VS2013中的一个相对路径,所以我必须将它与$(ProjectDir)结合起来才能达到预期的效果:

代码语言:javascript
复制
xcopy /y /d  "$(ProjectDir)External\*.dll" "$(ProjectDir)$(OutDir)"

顺便说一句,您可以通过在开头添加“echo”来轻松地调试脚本,并观察构建输出窗口中展开的文本。

票数 58
EN

Stack Overflow用户

发布于 2019-06-17 21:32:40

代码语言:javascript
复制
xcopy /y /d  "$(ProjectDir)External\*.dll" "$(TargetDir)"

您还可以参考相对路径,下一个示例将在位于项目文件夹上一级的文件夹中找到DLL。如果在一个解决方案中有多个使用DLL的项目,这会将DLL的源代码放在一个公共区域,当您将其中任何一个设置为“启动项目”时,都可以访问它们。

代码语言:javascript
复制
xcopy /y /d  "$(ProjectDir)..\External\*.dll" "$(TargetDir)"

/y选项无需确认即可复制。/d选项检查目标中是否存在文件,如果存在,则仅在源的时间戳比目标的时间戳新的情况下进行复制。

我发现至少在较新版本的Visual Studio中,例如VS2109,$(ProjDir)是未定义的,必须使用$(ProjectDir)

如果在xcopy中省略了目标文件夹,则应默认将其放在输出目录中。这对于理解为什么$(OutDir)本身没有帮助是很重要的。

至少在Visual Studio的最新版本中,$(OutDir)被定义为输出文件夹的相对路径,如bin/x86/Debug。单独使用它作为目标将从项目输出文件夹开始创建一组新的文件夹。例如:… bin/x86/Debug/bin/x86/Debug

将其与项目文件夹相结合,应该会让您找到合适的位置。例如:$(ProjectDir)$(OutDir)

但是,$(TargetDir)将在一个步骤中提供输出目录。

Microsoft's list of MSBuild macros for current and previous versions of Visual Studio

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1776060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档