2013-01-15 14 views
5

Ich habe bis jetzt MS Ajax Minifier verwendet, um meine CSS und JS zu quetschen und zu kombinieren. Meine Server setzen sehr weit in Zukunft Header ab, also brauche ich eine Cache-Ablaufstrategie. Derzeit versioniere ich diese Elemente manuell, indem ich den Dateinamen so ändere, dass sie bei jedem Release ablaufen.MSBuild minify & concat Javascript, Hash-Inhalt in Dateiname

Ich möchte dies etwas automatisieren, insbesondere indem ich den Hash der Dateiinhalte an den gequetschten Dateinamen angehängt habe. Bonuspunkte, wenn wir können dann einige Config XML aktualisieren (das gibt es in einem anderen Projekt-Datei) mit dieser aktualisierten Dateinamen

Wir verwenden TFS-Server bauen, so dass ich denke, das sollte in einer MSBuild Aufgabe gewickelt werden? Oder kann ich es einfach als Pre/Post Build Projektschritt ausführen lassen?

Würde mich sehr freuen, wenn jemand über Kenntnisse in diesem Bereich verfügt, die sie gerne teilen.

Dank

+0

Könnten Sie mir bitte ein Feedback zu meiner Antwort geben? Ich bin neu hier und ich versuche mich zu verbessern. Vielen Dank! –

+0

Sie könnten versuchen, https://github.com/vincpa/RxLoader –

Antwort

3

Sicher haben Sie alles von MSBuild tun konnte:

  • Ihre Ajax Minifier Manifest Files erstellen. Ich würde diese statischen und versionierten beibehalten.
  • Erstellen einer msbuild script enthält:

    1-Ajax Minifier Manifest Task das Quetschen und die Kombination zu tun.

    2 - Hashing Aufgabe. Wie Sie sehen können, ist das C# -Code. Ändern Sie den Code, um den Ausgabeordner zu lesen, der in Schritt '1' festgelegt wurde, und ändern Sie den Namen der Dateien, indem Sie jedem einzelnen den berechneten Hash hinzufügen.

  • Import das erstellte Msbuild-Skript in Ihren Projekten oder in Ihrem Haupt-Build-Skript, falls Sie eines haben.

+0

Entschuldigung für die Verzögerung in Kommentar. Ihre Antwort ist in Ordnung, soweit die Antworten gehen, ich hatte einfach keine Zeit, um alle Ihre Punkte noch entschuldigen.Wird diese Woche tun – WickyNilliams

2

Haben Sie die Funktion zur Bündelung und Verkleinerung in System.Web.Optimization berücksichtigt?

http://blogs.msdn.com/b/rickandy/archive/2012/08/14/adding-bundling-and-minification-to-web-forms.aspx

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

Es sollte Ihnen alles, was Sie ohne die msbuild Wartung Aufwand müssen tun.

Es berührt nicht die ursprünglichen Dateien und ändert den Bundle-Hash pro Build. Darüber hinaus kann es auf der Live-Site programmgesteuert deaktiviert werden, um das Debugging von css und js auf den Live-Sites zu ermöglichen, wobei alle ursprünglichen Dateinamen und Kommentare beibehalten werden.

Wir verwenden es sehr erfolgreich und ich ermutige UI-Programmierer, CSS- und Javascript-Dateien in kleinere und logischere Dateien zu teilen und mehr als nur wenige Kommentare in ihnen für die Dokumentation zu lassen. Der Endbenutzer wird immer ein einzelnes css und js erhalten, das pro Build einen anderen Namen hat.

+1

Leider ist dies nicht für meine Zwecke geeignet, da meine Skripte und CSS auf einem CDN gespeichert sind, und ich bevorzuge diese Art der Sache zur Build-Time eher Laufzeit. Nebenbei: Ich benutze Sourcemaps, um die Produktion von CSS/JS zu debuggen, erlaubt es Ihnen, Ihre minimierten/concat'd Scripts zu debuggen, als ob sie unminiced/unconcatd wären! Wenn Sie nicht auf diese stoßen, überprüfen Sie sie, sehr cool – WickyNilliams