I want delete files in a folder, which are more than six months old -older than 6 months-using Msbuild.
I want use %ModifiedTime (Well-known Item Metadata) of MsBuild
I prefer not use customs Tasks, only msbuild default and Microsoft.Sdc.Tasks. I use VS 2008, .net .35.
Any suggestions ?
<Target Name="SomeTarget">
<ItemGroup>
<FilesToDelete Include="Path\**\*.zip"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
</Target>
I think you can achieve this without need to use custom tasks in native MSBuild 4, but I haven’t started playing with that yet, so can’t comment.
However, as for native MSBuild 3.5 I don’t think it’s possible – in order to manipulate the dates you need to break out into code. You see, the ModifiedDate metadata is internally a string – and to do sensible manipulations you need to convert to a date.
I’m not sure what is in the Sdc tasks – I don’t use them as I prefer the CommunityTasks, but even with those tasks I can’t think of anything that would work.
Custom MSBuild tasks aren’t that scary – and I recommend that every (sizeable) project should have a solution that is built before any other solution that outputs a DLL containing your custom msbuild tasks into a well know location (eg a “lib” folder at the root of your source).
If you can allow this as a solution then here is a task I just knocked up that achieves what you want:
You would then use it like so:
Of course, YMMV