[Javascript] TypeScript "Kompilieren beim Speichern" Feature funktioniert nicht in Visual Studio 2015


Answers

Ich bin heute auf dieses Problem gestoßen: Ich habe das mit der neuen Option "watch":true behoben "watch":true Compiler, die auch in den neuesten TypeScript-Versionen über JSON verfügbar ist:

{
  "compilerOptions": {
    "watch": true
  }
}

Nachdem ich das getan hatte, musste ich ein weiteres Problem lösen, das mit dem folgenden Fehler im Ausgabefenster zusammenhing:

Object doesn't support property or method 'watchFile'

Es stellte sich heraus, dass mein System eine veraltete Version von TypeScript (1.0.x) verwendete, obwohl ich mir sicher war, dass ich eine neuere Version von Visual Studio 2015 Update 1 (1.7) hatte. Wenn Sie auf dieses Problem stoßen, können Sie Ihre TSC-Version einfach überprüfen, indem tsc -v an einer Eingabeaufforderung den Befehl tsc -v eingeben.

Wenn es 1.0.x oder irgendetwas <1.7 sagt, ist es wahrscheinlich aufgrund der Tatsache, dass Sie einige alte Verweise in Ihrer PATH-Umgebungsvariablen haben. Stellen Sie sicher, dass Sie 1.7 oder höher installiert haben, indem Sie in Ihrem Microsoft SDKs-Ordner nachschauen, der von Visual Studio verwendet wird, um die TypeScript-Pakete zu installieren, wenn sie aktualisiert werden:

C:\Program Files (x86)\Microsoft SDKs\TypeScript

Wenn nicht, aktualisieren Sie entsprechend. Öffnen Sie CPanel > System > Erweitert > Umgebungsvariablen , wählen Sie Systemvariablen und klicken Sie auf Bearbeiten ; Durchsuchen Sie die Liste, indem Sie nach einem Verweis auf den TypeScript-Ordner suchen, ändern Sie einen davon, damit er auf Ihre zuletzt installierte Version von TypeScript ( 1.7 oder höher) verweist, und löschen Sie alle anderen Duplikate. Siehe auch Screenshot unten:

Weitere Informationen finden Sie in diesem Post .

Question

Die Funktion "Beim Speichern kompilieren" funktioniert nach dem Upgrade auf Visual Studio 2015 nicht. Wenn ich in meinem Projekt eine Änderung an einer .ts Datei .ts und sie speichere, wird in der Statusleiste am unteren Rand der IDE die Meldung " Output(s) generated successfully , aber die generierte .js Datei ändert sich nicht.

Hier ist, was ich versucht habe:

  • Folgendes zum .csproj <Project> in meinem .csproj :

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
  • Aktivieren und Deaktivieren der Option "Automatisches Kompilieren von TypScript-Dateien, die nicht Teil eines Projekts sind" unter Tools -> Options -> TypeScript -> Project :

  • doppelte Überprüfung, um sicherzustellen, dass "Compile on save" in den TypeScript Build-Eigenschaften meines Projekts aktiviert ist:

Was vermisse ich?

Als eine Nebenbemerkung funktioniert der TypScript-Kompilierungsschritt erwartungsgemäß, wenn er von einem regulären Build ausgelöst wird.




In Projekteigenschaften -> "TypeScript Build", können Sie auch einfach nur deaktivieren "Keine Ausgaben ausgeben, wenn Fehler gemeldet werden." Wenn es aktiviert ist, wird das Übertragen beim Speichern deaktiviert, wenn ein Fehler vorliegt oder nicht.




Lösung:

Für mich, und ich bin mir ziemlich sicher, dass dies auch bei anderen der Fall ist, lag das an einem Fehler in der tsconfig.json.

Sie müssen "compileOnSave" hinzufügen: true. Aber im globalen Abschnitt nicht innerhalb von Compileroptionen.

Wrong:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "compileOnSave": true

  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Correct:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"

  },
"compileOnSave": true,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Freundliche Grüße,

Anders Beide Basechat.




In meinem Fall hatte ich Visual Studio Community 2015 neben VS 2012 installiert. Ich hatte Web Essentials für Typoskript im Jahr 2012 verwendet, die zu Konflikt mit 2015 schien.

Durch die Deinstallation von Web Essentials im Jahr 2012 wurde das Problem für mich behoben.