views:

528

answers:

1

I'm currently migrating a project to Visual Studio 2010 and am trying to figure out how to minify JS and CSS files individually on build.

In Visual Studio 2008 I used a Web Deployment Projects with a build task that referenced the C# port of the YUI Compressor. In Visual Studio 2010 Web Deployment Projects seem to have been integrated into the build process. Now there is this Microsoft AJAX Minifier in public beta and I'm more confused than ever.

I found this blog post which makes the business with the Microsoft AJAX Minifier a non-starter because of CSS limitations. This shouldn't be confusing...it should be a check box in Visual Studio 2010.

Is there a simple way do this with Visual Studio 2010? What am I missing here people?

+3  A: 

This should still be possible with VS2010 by editing the csproj aka msbuild file.

Taken from this thread on CodePlex.

<ItemGroup>
  <JavaScriptFiles Remove="@(JavaScriptFiles)" />
  <JavaScriptFiles Include="../js/2.js"/>
</ItemGroup>
<CompressorTask
  JavaScriptFiles="@(JavaScriptFiles)"
  ObfuscateJavaScript="True"
  PreserveAllSemicolons="False"
  DisableOptimizations="Nope"
  EncodingType="Default"
  DeleteJavaScriptFiles="false"
  LineBreakPosition="-1"
  JavaScriptOutputFile="../js/2.min.js"
  LoggingType="ALittleBit"
  ThreadCulture="en-au"
  IsEvalIgnored="false"/> 
<ItemGroup>
  <JavaScriptFiles Remove="@(JavaScriptFiles)" />
  <JavaScriptFiles Include="../js/3.js" />
  <JavaScriptFiles Include="../js/4.js" />
</ItemGroup>
<CompressorTask
  CssFiles="@(CssFiles)"
  DeleteCssFiles="false"
  CssOutputFile="../css/release.css"
  CssCompressionType="YuiStockCompression"
  JavaScriptFiles="@(JavaScriptFiles)"
  ObfuscateJavaScript="True"
  PreserveAllSemicolons="False"
  DisableOptimizations="Nope"
  EncodingType="Default"
  DeleteJavaScriptFiles="false"
  LineBreakPosition="-1"
  JavaScriptOutputFile="../js/3.min.js"
  LoggingType="ALittleBit"
  ThreadCulture="en-au"
  IsEvalIgnored="false"/>

JarrettV
Or you can also use post-build events and have it run a custom msbuild file. :)
Pure.Krome