2016-05-13 6 views
0

Wir verwenden Typescript in Visual Studio 2015, um eine ziemlich komplexe einzelne Seite Anwendung zu erstellen. Dies ist ein Webprojekt, nicht MVC oder .NET auf dem Client. Wir verwenden nur jQuery, JavaScript, CSS3 und HTML5 auf dem Client und Web API 2.0/C# auf dem Server. Alle Dateien müssen als Teil des Erstellungsprozesses gebündelt/verkleinert werden.Visual Studio 2015 Bundler/Minifier Probleme im Web/SPA-Projekt

Ausgabe

Bis vor kurzem der madskristensen Bündler/Minifier gearbeitet hat zuverlässig HTML-Dateien und Bündel/minify alle CSS und JavaScript-Dateien in zwei separate Dateien zum Download minify. Vor ein paar Tagen hat VS während des Projekt-Build-Prozesses einen Fehlerdialog angezeigt. Dies tritt auf, wenn eine oder mehrere JavaScript-Dateien bearbeitet und ein Build initiiert wird. Der Bundler/Minifier versucht, seine Aufgabe zu erledigen, kann aber nicht auf die Datei (en) zugreifen.

Ich habe mindestens zwei andere Personen gefunden, die vor kurzem auf das gleiche Problem gestoßen sind. Ich habe keine Lösungen gefunden.

Fehlermeldung

Der Bündler/Minifier Prozess kann nicht auf die Datei zugreifen (en), weil sie oder werden sie von einem anderen Prozess verwendet werden. Diese Warnmeldung wird in einem Popup-Dialogfeld (manchmal mehr als 20 Fenster gleichzeitig) vom Bundler/Minifier angezeigt. Die Datei, die als Konkurrenz angezeigt wird, ist der gebündelte JavaScript-Code (bundled.js). Anscheinend gibt es eine Art von Race Condition, die dieses Problem verursacht. Hin und wieder erstellt und generiert Visual Studio die gebündelte/reduzierte JavaScript-Datei ohne Probleme (selten und unvorhersehbar). Meistens wird VS den Minification-Prozess abschließen, aber die Größe der verkleinerten Datei ist kleiner als normal und ist beschädigt.

Wir verwenden Windows 10. Die neueste Version des Madskristensen Bundler/Minifier wurde vor ein paar Tagen installiert. Ich war nicht in der Lage herauszufinden, wo eine frühere Version zu finden, um zu sehen, ob es das Problem ist. Ich habe das Problem auf mehreren PCs überprüft, aber leider wurden alle unsere PCs mit der neuesten Softwareversion aktualisiert. Wir haben überprüft, dass ältere Projektversionen, die das Problem in der Vergangenheit nicht hatten, jetzt die gleichen Symptome aufweisen.

Fragen 1: Wo kann man ältere Versionen des Madskristensen Bundler/Minifier bekommen? Ich fand Links für Visual Studio 2013, aber nicht 2015.

Frage 2: Kann der Madskristensen Bundler/Minifier aus einer Skriptdatei ausgeführt werden statt in den Build-Flow eingebettet werden? Ich habe versucht, mithilfe des Task Runner-Explorers den Prozess für die Ausführung vor und nach dem Build festzulegen, aber das Problem ist geblieben.

Ich bin auf der Suche nach einer Möglichkeit, die Madskristensen Bundler/Minifier arbeiten zu lassen. Irgendwelche Ideen würden sehr geschätzt werden.

Aktualisiert Frage 3: Wenn der madskristensen Bündler/Minifier kann nicht aus einer Batch-Datei in der Post Build-Prozess ausgeführt werden, was sind einige Alternativen?hoffentlich

Grüße ...

Antwort

2

Abhilfe Option

Da diese Frage ein Show-Stopper für unseren Test-/Entwicklungsprozess ist, mussten wir mit einer tragfähigen kurzfristig Alternative kommen, bis das Problem behoben ist mit dem Madskristensen Bundler/Minifier.

Der Microsoft Ajax Minifier, der sich unter http://ajaxmin.codeplex.com/ befindet, ist eine praktikable Alternative, unseren JavaScript-Projektcode zu bündeln und zu minimieren. Es dauerte nicht lange, eine Batch-Datei in der Post Build-Prozess in Visual Studio zum Laufen zu bekommen 2015

Beitrag Batch-Build-Datei

I umfasste die folgend in der Post Build-Prozess: Aufruf cd „$ (ProjectDir)“ bundleMinifyJavaScript.bat (im Projekt-Stammverzeichnis)

in der Batchdatei, änderte ich zuerst den Projektpfad und dann ausgeführt, um den vollständigen Pfad zum minifier Ajax wie folgt:

cd "C: \ Benutzer s \ Pfad ... \ projectName "

" C: \ Programme (x86) \ Microsoft \ Microsoft Ajax Minifier \ ajaxminifier.exe "libs/jquery.js libs/typeahead.js ... weitere Dateien hier ... -aus App/bundle.min.js -clobber

Dieser Prozess generiert den entsprechenden gebündelten/minimierten Code, der in unserem App-Projektordner abgelegt wird. Die Option clobber ermöglicht das Überschreiben der vorherigen Version der Datei bundle.min.js.

Diese Problemumgehung unterstützt das Erstellen einer sortierten Liste von JavaScript-Dateien im Bundle, die für unser Projekt erforderlich ist.

Ich hoffe immer noch auf eine Option, die Madskristensen Bundler/Minifier zu verwenden, weil wir es immer noch verwenden müssen, um unser HTML zu minimieren.

Grüße ...