Creo que el compresor YUI para .NET hará exactamente lo que necesita.
http://yuicompressor.codeplex.com/
EDITAR: Por encima está mal como yo leído mal la pregunta. El siguiente código instalará un filtro de respuesta que le permite manipular la salida, en este caso simplemente elimina los caracteres de nueva línea.
Espero que esto ayude.
[HandleError]
public class HomeController : Controller
{
[Minify]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
}
public class Minify : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//You can check if the content type is CSS/JS here and prevent the filter running on HTML pages
filterContext.HttpContext.Response.Filter = new MinifyFilter(filterContext.HttpContext.Response.Filter);
base.OnActionExecuting(filterContext);
}
}
public class MinifyFilter : MemoryStream
{
private StringBuilder outputString = new StringBuilder();
private Stream outputStream = null;
public MinifyFilter(Stream outputStream)
{
this.outputStream = outputStream;
}
public override void Write(byte[] buffer, int offset, int count)
{
outputString.Append(Encoding.UTF8.GetString(buffer));
}
public override void Close()
{
//Call the minifier here, your data is in outputString
string result = outputString.ToString().Replace(Environment.NewLine, string.Empty);
byte[] rawResult = Encoding.UTF8.GetBytes(result);
outputStream.Write(rawResult, 0, rawResult.Length);
base.Close();
outputStream.Close();
}
}
¿Ha considerado minify on publish? Puedes hacer esto usando ms build, este es el que usamos http://code.google.com/p/antix-software/wiki/MSBuild –
Es un no va, estos resultados son en realidad vistas SPARK que son simplemente JavaScript con incrustado C# (localización, valores predeterminados, etc.). Por lo tanto, deben ejecutarse de forma dinámica y no pueden preminificarse. Necesita ser post ejecución. –