it-swarm.com.de

TypeScript-Funktion "Kompilieren beim Speichern" funktioniert in Visual Studio 2015 nicht

Die Funktion "Beim Speichern kompilieren" funktioniert nach dem Upgrade auf Visual Studio 2015 nicht für mich. Wenn ich eine .ts-Datei in meinem Projekt ändere und speichere, wird in der Statusleiste am unteren Rand von IDE Output(s) generated successfully , aber die generierte .js-Datei ändert sich nicht.

Folgendes habe ich ausprobiert:

  • fügen Sie dem <Project>-Stammelement in meinem .csproj Folgendes hinzu:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • aktivieren und Deaktivieren der Option "TypeScript-Dateien automatisch kompilieren, die nicht Teil eines Projekts sind" in Tools -> Options -> TypeScript -> Project:

     enter image description here

  • um zu überprüfen, ob "Kompilieren beim Speichern" in den TypeScript Build-Eigenschaften meines Projekts aktiviert ist:

     enter image description here

Was vermisse ich?

Nebenbei bemerkt funktioniert der TypeScript-Kompilierungsschritt erwartungsgemäß, wenn er durch einen regulären Build ausgelöst wird.

75
Nathan Friend

Dieses Problem scheint mit der letzten Aktualisierung der Erweiterung TypeScript Language Services behoben worden zu sein.

Siehe diese Antwort für Anweisungen zum Anwenden dieses Updates.

5
Nathan Friend

Für mich war es diese Option in tsconfig.json:

"compileOnSave": true,
"compilerOptions": { ... },

Starten Sie Visual Studio neu, damit diese Änderung wirksam wird.

128

Ich bin heute über dieses Problem gestolpert: Ich habe das mit der neuen "watch":true-Compileroption behoben, die in den neuesten TypeScript-Versionen auch über JSON verfügbar ist:

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

Danach musste ich ein anderes Problem lösen, das sich auf den folgenden Fehler im Ausgabefenster bezieht:

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 leicht überprüfen, indem Sie tsc -v an einer Eingabeaufforderung eingeben.

Wenn 1.0.x oder etwas <1.7 angezeigt wird, liegt dies wahrscheinlich daran, dass Ihre PATH-Umgebungsvariable einige alte Referenzen enthält. Stellen Sie sicher, dass Sie 1.7 oder höher installiert haben, indem Sie in Ihrem Microsoft SDKs-Ordner nachsehen, der von Visual Studio zur Installation der TypeScript-Pakete verwendet wird, sobald diese aktualisiert werden:

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

Wenn nicht, bitte entsprechend aktualisieren. Öffnen Sie CPanel> System> Advanced> Umgebungsvariablen, wählen Sie Systemvariablen aus und klicken Sie auf Edit; Durchsuchen Sie die Liste und suchen Sie nach einem Verweis auf den TypeScript-Ordner. Ändern Sie einen dieser Ordner, sodass er auf die zuletzt installierte TypeScript-Version (1.7 oder höher) verweist, und löschen Sie alle anderen Dupes. Siehe auch Screenshot unten:

 enter image description here

Für weitere Details lesen Sie diesen Beitrag in meinem Blog.

31
Darkseal

Lösung:

Für mich, und ich bin mir ziemlich sicher, dass dies auch für andere der Fall ist, war dies auf einen Fehler in der tsconfig.json zurückzuführen.

Sie müssen "compileOnSave" hinzufügen: true. Aber im globalen Abschnitt nicht in CompilerOptions.

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 Both Basechat.

4
Anders Both

In meinem Fall hatte ich Visual Studio Community 2015 zusammen mit VS 2012 installiert. Ich hatte Web Essentials für TypeScript im Jahr 2012 verwendet, was mit 2015 in Konflikt zu stehen schien.

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

2

Mit TypeScript 2 müssen Sie "outDir": aus Ihrer tsconfig löschen. Beheben Sie den Fehler für mich im Visual Studio. 

2
Yvan

Der "compileOnSave": true, funktionierte nicht für mich. Ich habe schließlich herausgefunden, dass Visual Studio den "compileOnSave": true,-Wert nicht einhält, wenn er in einer anderen .json-Datei definiert ist, die Sie erweitern. Es muss in der Wurzel sein, damit es funktioniert.

1
Daryl

In den Projekteigenschaften -> "TypeScript Build" können Sie auch einfach die Option "Keine Ausgaben ausgeben, wenn Fehler gemeldet werden" deaktivieren. Wenn Sie diese Option aktivieren, scheint Transpiling beim Speichern zu deaktivieren, wenn ein Fehler vorliegt oder nicht.

1

suchen Sie die Datei, d. h. C:\file.ts in Ihrem terminal/cmd und geben Sie ein

tsc file.ts -w // watches for file changes and converts on save
1
WasiF

Genau dasselbe Problem hier. Ich verwende Visual Studio 2015 Update 3 und TypeScript 2.9.2.0. In Tools/Optionen/Projekte und Lösungen/Externe Web-Tools habe ich $ (PATH) auf die zweite Position aktualisiert. Mit all diesen Konfigurationen funktioniert compileOnSave: true für mich nicht. Die Lösung für die Problemumgehung ist eine Befehlszeile, öffnen Sie ng build --watch und lassen Sie den Knoten die automatische Kompilierung übernehmen

0
Yue Yin