Visual Studio后构建事件 - 将文件复制到不同的相对目录

3
基本上,我想做的是使用通配符来指定一个目录。
后置生成事件在PageComponents项目上:
PageComponents WidgetTemplates WidgetTemplate1 Usercontrol1 WidgetTemplate2 Usercontrol2
我想将所有用户控件复制到Web项目中,但要复制到不同的相对位置:
Web CtrlPresentation Usercontrol1 Usercontrol2
我试图使用通配符来指定WidgetTemplates目录:
xcopy "$(ProjectDir)WidgetTemplates\*\*.ascx" "$(SolutionDir)Client.Web\CtrlPresentation" /y /s
但这完全失败了。然后我尝试了以下方法:
xcopy "$(ProjectDir)WidgetTemplates\*.ascx" "$(SolutionDir)Client.Web\CtrlPresentation" /y /s
但这也会把每个WidgetTemplate文件夹都复制过去。
有没有办法实现我想做的事情?

Jeremy - 你解决了吗?我正在尝试解决一个非常类似的问题。 - itsmatt
@itsmatt - 不好意思,我没有。我采取了手动的方式,只是为每个我想复制的目录添加了一个xcopy。最后只有大约十几个,所以不是特别麻烦。 - Jeremy Wiggins
根据文档,看起来您想省略 /s链接。**/s:复制目录和子目录,除非它们为空。如果省略 /s,则 xcopy 仅在单个目录中工作。**您是否尝试在 cmd 中运行 xcopy 命令以确保它正在按照您的预期执行? - Nick Molyneux
1个回答

0

尝试使用任务(Task)。

<ItemGroup>
    <MySources Include="$(ProjectDir)WidgetTemplates\**\*.ascx" />
</ItemGroup>
<Target Name="CopyOver">
    <Copy SourceFiles="@(MySources)" DestinationFiles="@(MySources->'$(SolutionDir)Client.Web\CtrlPresentation\%(FileName)%(Extension)')">
</Target>

在您的构建之后使用此目标

<BuildDependsOn>
    $(BuildDependsOn);
    CopyOver
</BuildDependsOn>

如果这个回答解决了你的问题,为什么不接受它呢 :) - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接