我在一个后期构建事件中使用XCOPY,将编译后的DLL从它们的输出文件夹复制到主应用程序的输出文件夹中。DLL被复制到主应用程序输出文件夹中的"Modules“子文件夹中,如下所示:
xcopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\" 如果Modules文件夹存在,该命令可以很好地工作,但我在测试过程中发现,如果该文件夹不存在,XCOPY就不会创建它,该命令也会失败。
如果文件夹不存在,是否有XCOPY开关会导致创建该文件夹?如果不存在,如果文件夹不存在,我应该在构建后事件中添加什么来创建该文件夹?谢谢你的帮助。
发布于 2011-03-03 10:11:36
我在命令行中使用以下命令进行了尝试
D:\>xcopy myfile.dat xcopytest\test\并且目标目录已正确创建。
如果没有,您可以使用启用了cmd的命令扩展的mkdir命令创建目标目录,如下所示
cmd /x /c mkdir "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"('/x‘启用命令扩展,以防它们在您的系统上没有默认启用,我对cmd不是很熟悉)
使用
cmd /?
mkdir /?
xcopy /?有关更多信息,请访问:)
发布于 2012-03-27 23:44:38
使用"/I“的答案是有效的,但是使用小技巧的目标,你必须以字符\结束,以告诉xcopy目标是目录而不是文件!
示例:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder" /F /R /Y /I不起作用,并返回代码2,但这一条:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder\" /F /R /Y /I我的示例中使用的命令行参数:
/F -显示完整的源和目标文件名
/R -这将覆盖只读文件
/Y -禁止提示覆盖现有文件
/I -假定目标是目录(但必须以结尾)
发布于 2011-03-03 10:11:47
我讨厌PostBuild步骤,它允许太多的事情发生在构建工具的权限之外。我认为最好让MSBuild来管理复制过程,并进行更新。您可以按如下方式编辑.csproj文件:
<Target Name="AfterBuild" Inputs="$(TargetPath)\**">
<Copy SourceFiles="$(TargetPath)\**" DestinationFiles="$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\**" OverwriteReadOnlyFiles="true"></Copy>
</Target>https://stackoverflow.com/questions/5175806
复制相似问题