Dav*_*man 72 xcopy post-build-event
我在后期构建事件中使用XCOPY将已编译的DLL从其输出文件夹复制到主应用程序的输出文件夹.DLL被复制到主app输出文件夹中的"Modules"子文件夹,如下所示:
xcopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"
Run Code Online (Sandbox Code Playgroud)
如果Modules文件夹存在,该命令可以正常工作,但我在测试期间发现如果文件夹不存在,XCOPY不会创建它,并且命令失败.
是否有一个XCOPY开关,如果该文件夹不存在,将导致该文件夹被创建?如果没有,如果它不存在,我将添加到我的post-build事件中以创建该文件夹?谢谢你的帮助.
psu*_*lek 111
回答使用"/ I"正在工作,但有一点技巧 - 在目标中你必须以字符\结束告诉xcopy目标是目录而不是文件!
例:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder" /F /R /Y /I
Run Code Online (Sandbox Code Playgroud)
不起作用并返回代码2,但这一个:
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)_DropFolder\" /F /R /Y /I
Run Code Online (Sandbox Code Playgroud)
我的示例中使用的命令行参数:
/ F - 显示完整的源文件名和目标文件名
/ R - 这将覆盖只读文件
/ Y - 禁止提示覆盖现有文件
/ I - 假设目的地是目录(但必须以\结尾)
Mar*_*ner 46
我在命令行上尝试了这个
D:\>xcopy myfile.dat xcopytest\test\
Run Code Online (Sandbox Code Playgroud)
并正确创建了目标目录.
如果没有,您可以使用启用了命令扩展名的mkdir
命令创建目标目录cmd
cmd /x /c mkdir "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\"
Run Code Online (Sandbox Code Playgroud)
('/ x'启用命令扩展,以防系统默认情况下没有启用它们,我不熟悉cmd
)
使用
cmd /?
mkdir /?
xcopy /?
Run Code Online (Sandbox Code Playgroud)
了解更多信息 :)
Rit*_*ton 15
我讨厌PostBuild步骤,它允许在构建工具的权限范围之外发生太多事情.我相信让MSBuild管理复制过程并进行更新会更好.您可以像这样编辑.csproj文件:
<Target Name="AfterBuild" Inputs="$(TargetPath)\**">
<Copy SourceFiles="$(TargetPath)\**" DestinationFiles="$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules\**" OverwriteReadOnlyFiles="true"></Copy>
</Target>
Run Code Online (Sandbox Code Playgroud)
你可以使用robocopy:
robocopy "$(TargetPath)" "$(SolutionDir)Prism4Demo.Shell\$(OutDir)Modules" /E
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127940 次 |
最近记录: |