为了账号安全,请及时绑定邮箱和手机立即绑定

MSBuild:如何递归复制到项目的某些父文件夹

MSBuild:如何递归复制到项目的某些父文件夹

C#
阿晨1998 2023-09-24 16:23:55
我有以下项目结构SolutionDir  -src    -Feature    |---Feature.A    |-----code    |-------ViewA    |---------FileA.cshtml    |---Feature.B    |-----code    |-------ViewB    |---------FileB.cshtml我希望将其复制到以下结构中的 dest 目录-OutputDir|--code|----ViewA|------ViewA.cshtml|----ViewB|------ViewB.cshtml我在 .csproj 中使用以下脚本<Target Name="AfterBuild"><ItemGroup>  <FeatureViewFiles     Include="$(SolutionDir)src\Feature\Feature.*\code\**\*.cshtml" /></ItemGroup><Copy   SkipUnchangedFiles="true"   SourceFiles="@(FeatureViewFiles)"   DestinationFolder="OutputDir\code\%(RecursiveDir)%(Filename)%(Extension)" /></Target>现在,因为在我的Include通配符中Feature.*,RecursiveDir指令输出为Feature.A\code\ViewA\,而我真正想要的是它从文件夹下开始复制文件夹结构code。知道我如何实现这一目标吗?
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

抱歉,恐怕答案是否定的。

据我所知,这是复制任务的预期行为。如果您在Feature.*中使用通配符,它不会从ViewX中选择结构。只有当您指定Feature.A或Feature.B时,复制任务才能按您的预期进行。但我认为这不是您想要的,所以我认为复制任务无法满足您对此问题的需求。

除了复制任务之外,还有一个可执行任务,您可以在其中指定命令。它的工作方式类似于使用命令行 cmd.exe。因此,如果有任何命令或批处理文件可以完成这项工作,您可以使用Exec 任务来调用它们。但对于复制任务,目前不支持指定父文件夹级别的行为:(

另外:我尝试了 copy、xcopy 但没有成功。也许您可以尝试robocopy或任何其他工具。如果它们可以在命令行中工作,那么您可以使用 exec 命令将它们纳入您的构建目标。


查看完整回答
反对 回复 2023-09-24
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

我相信这是不可能的。

尝试搜索 Exec 命令,您可以在其中指定多个命令,也可以使用批处理文件,这可能对您的情况有帮助。


查看完整回答
反对 回复 2023-09-24
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信