预构建事件:使用 XCopy 将文件夹及其子文件夹和文件复制到构建目录中
Posted
技术标签:
【中文标题】预构建事件:使用 XCopy 将文件夹及其子文件夹和文件复制到构建目录中【英文标题】:Pre Build Event: Copy Folder and it's SubFolders and files into Build Directory using XCopy 【发布时间】:2012-09-16 15:33:57 【问题描述】:我有 Window 应用程序和一些插件,它是 ChildPlugins,我放置在我的应用程序文件夹结构中(参见文件夹结构图像)。我使用 SVN 作为源代码控制,所以每个文件夹都有 .SVN
文件夹。
这是我的问题:
下图是我的插件目录结构。所有文件夹都有一些与其插件相关的文件。现在我想使用 Pre Built Event 将所有文件夹(带有 SubFolders)和它的文件复制到我的 Application Build 输出路径。
在网上搜索后,我发现使用 XCopy 可以实现我想要的。通过使用下面的代码,我可以复制插件目录和它的文件,但不能复制它的子文件夹和子文件夹文件。
xcopy "$(SolutionDir)Plugins\*.*" "$(SolutionDir)Windows\Host\Host.GUI\bin\x86\$(ConfigurationName)\Plugins\" /Y/D
我想复制文件夹,它是包含所有文件的所有子文件夹,并且想要排除 .SVN
。谁能指出我该怎么做?
谢谢。
【问题讨论】:
在我的代码中添加 /E 后作为@CrazyCasta 的回答它运行良好。 xcopy "$(SolutionDir)Plugins*.*" "$(SolutionDir)Windows\Host\Host.GUI\bin\x86\$(ConfigurationName)\Plugins\" /Y/D/E 【参考方案1】:我用过这个:
xcopy "$(ProjectDir)MyFolder\*.*" "$(SolutionDir)ConsoleApplication1\bin\Release\MyFolder" /Y /I /E
并且工作正常,当我编译包含所有文档的项目时,文件夹“MyFolder”出现在我的“Release”文件夹中。
这里要指出的是,$(SolutionDir) 之后的路径会根据您的解决方案的名称而改变,我的解决方案是 ConsoleApplication1。
【讨论】:
【参考方案2】:您需要添加 /E 开关来复制子目录(包括空目录)。
【讨论】:
【参考方案3】:如果不需要带有解决方案名称或配置类型的路径会更好:
xcopy "$(ProjectDir)MyFolder\*.*" "$(TargetDir)\MyFolder" /Y /I /E
【讨论】:
【参考方案4】:这是一个将 Assets 文件夹(位于项目文件夹中)复制到 bin(debug or release ...)\Assets 的示例
<Target Name="BeforeBuild">
<Exec Command="xcopy "$(ProjectDir)Assets\*.*" "$(ProjectDir)bin\$(Configuration)\Assets" /Y /I /E" />
</Target>
注意,双引号是用特殊词代替的
【讨论】:
以上是关于预构建事件:使用 XCopy 将文件夹及其子文件夹和文件复制到构建目录中的主要内容,如果未能解决你的问题,请参考以下文章
为啥构建后步骤 (xcopy) 偶尔会在 TeamCity 构建中以代码 2 退出?