18

During a Visual Studio build, I need to have an XML file generated from another XML file. It is obvious to me an XSLT template and transform is exactly what I need.

The way I prefer to accomplish this is to use the "Custom Tool" property found on project files. Is there already a built-in tool I can use for this purpose? My next option might be to use a pre-build step of the csproj. Again, is there a (Visual Studio or MSBUILD) pre-existing or pre-installed tool that I can invoke from a pre-build step to do this?

Finally, if need be, I could have modify the .csproj file itself to add a MSbuild Task which performs the transform (I think MSBuild comes with such a Task - if not I know they are available for download).

Overall, I'd just like to know the easiest way to get this done, and how to do it. I already know how to write XSL templates. :)

Brent Arias
  • 29,277
  • 40
  • 133
  • 234

2 Answers2

22

If you're using VS2010 you can use the built-in XslTransformation task of MSBuild 4 in a post build step.

<Target Name="AfterBuild">
  <XslTransformation
    XslInputPath="transform.xslt"
    XmlInputPaths="in.xml"
    OutputPaths="out.xml" />
</Target>
Thomas Gerstendörfer
  • 2,646
  • 1
  • 23
  • 21
1

I'd personally go with installing the MSBuild Community Tasks and invoking msbuild.exe from the PostBuild Event in the project settings.

A shudder just went down my spine at the thought of XSLT files too! :P

Paul Carroll
  • 1,523
  • 13
  • 15
  • I will install MSBuild Community Tasks if I must (I use those in other circumstances), but I'm really hoping to find an already-installed tool that fits the need. – Brent Arias Aug 05 '11 at 22:38
  • 1
    In that case if you're using VS2010 you could use the config transforms stuff... but that really just works on deply AFAIK – Paul Carroll Aug 07 '11 at 09:26