使用相对路径在MSBuild中移动文件

6
我正在尝试将某种类型的所有文件移动到相对于文件本身的目录中,并且我想知道是否可以使用MSBuild实现。基本上,我正在使用Microsoft AJAX Minifier来缩小站点上的所有JavaScript和CSS文件。这会将.min.js和.min.css文件输出到与JavaScript和CSS文件相同的目录中。由于我的站点有许多皮肤,因此有JS和CSS文件位于许多目录中。我想能够添加一个任务,在AJAX Minifier之后运行,将所有.min.js和.min.css文件移动到与文件位置相关的/min/目录中。因此,/Skin1/somescript.min.js将移动到/Skin1/min/somescript.min.js,/Skin2/somescript.min.js将移动到/Skin2/somescript.min.js。我所知道的唯一完成复制/移动的方法需要知道绝对目录(或者应该说是相对于项目文件的目录),但我似乎找不到根据我正在移动的文件的目录进行移动的方法。这可行吗?
1个回答

12
<CreateItem Include="wwwroot\**\*.min.js;wwwroot\**\*.min.css">
    <Output TaskParameter="Include" ItemName="FilesToMove" />
</CreateItem>

<Move SourceFiles="@(FilesToMove)" DestinationFiles="@(FilesToMove->'wwwroot\%(RecursiveDir)\min\%(Filename)%(Extension)')"/>
假设您正在使用来自MSBuild社区任务的Move任务。如果没有,您可以只是复制然后删除原文件。
答案:假设您使用的是来自MSBuild社区任务的Move任务。如果不是,则可以直接复制并删除原始文件。

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