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

时间:2010-08-26 16:56:24

标签: msbuild msbuild-task msbuildcommunitytasks

我正在尝试将某种类型的所有文件移动到相对于文件本身的目录中,我想知道是否可以使用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。

我知道完成复制/移动的唯一方法需要知道绝对目录(或者我应该说相对于Project文件的目录)但我似乎找不到基于相对于目录的移动方法我正在搬家的文件。

可以这样做吗?

1 个答案:

答案 0 :(得分: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 community tasks中的移动任务。如果没有,您可以复制然后删除原件。