Funkcja „Kompiluj przy zapisywaniu” nie działa po uaktualnieniu do programu Visual Studio 2015. Kiedy wprowadzam zmiany w .ts
pliku w moim projekcie i zapisuję, na pasku stanu na dole środowiska IDE jest wyświetlany komunikat Output(s) generated successfully
, ale wygenerowany .js
plik nie nie zmienia się.
Oto, czego próbowałem:
dodanie następujących elementów do
<Project>
elementu głównego w my.csproj
:<PropertyGroup> <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> </PropertyGroup>
zaznaczenie i odznaczenie opcji „Automatycznie kompiluj pliki TypeScript, które nie są częścią projektu” w
Tools -> Options -> TypeScript -> Project
:podwójne sprawdzenie, czy opcja „Kompiluj przy zapisywaniu” jest zaznaczona we właściwościach kompilacji TypeScript mojego projektu:
czego mi brakuje?
Na marginesie, krok kompilacji TypeScript działa zgodnie z oczekiwaniami po wyzwoleniu przez zwykłą kompilację.
źródło
Odpowiedzi:
Dla mnie była to taka opcja w
tsconfig.json
:"compileOnSave": true, "compilerOptions": { ... },
Uruchom ponownie program Visual Studio, aby ta zmiana zaczęła obowiązywać.
źródło
"watch": true
docompilerOptions
pracowało dla mnie w programie Visual Studio 2015 Update 2 z Typescript 1.8.29.0.csproj
pliku do korzystania ztsconfig.json
. Jeśli strona TypeScript właściwości projektu nie jest wyłączona, prawdopodobnie oznacza to, że masz zainstalowaną starą wersję narzędzi TypeScript dla programu Visual Studio i powinieneś zainstalować microsoft.com/en-us/download/details.aspx?id=48593Natknąłem się dzisiaj na ten problem: naprawiłem go za pomocą nowej
"watch":true
opcji kompilatora, dostępnej również przez JSON w najnowszych wersjach TypeScript:{ "compilerOptions": { "watch": true } }
Po wykonaniu tej czynności musiałem rozwiązać inny problem związany z następującym błędem, który pojawił się w oknie wyjściowym:
Object doesn't support property or method 'watchFile'
Okazało się, że mój system używa przestarzałej wersji TypeScript (1.0.x), mimo że byłem pewien, że mam nowszą wersję, która została dołączona do Visual Studio 2015 Update 1 (1.7). Jeśli napotkasz ten problem, możesz łatwo sprawdzić wersję tsc, wpisując
tsc -v
z wiersza polecenia.Jeśli mówi
1.0.x
lub cokolwiek <1.7, prawdopodobnie wynika to z faktu, że w zmiennej środowiskowej PATH znajdują się stare odwołania. Upewnij się, że masz zainstalowaną wersję 1.7 lub nowszą, sprawdzając zawartość folderu Microsoft SDKs, który jest używany przez program Visual Studio do instalowania pakietów TypeScript w miarę ich aktualizacji:Jeśli nie, zaktualizuj odpowiednio. Otwórz CPanel > System > Zaawansowane > Zmienne środowiskowe , wybierz Zmienne systemowe i kliknij Edytuj ; przejrzyj listę w poszukiwaniu jakichkolwiek odniesień do folderu TypeScript, zmień jeden z nich, aby wskazywał na najnowszą zainstalowaną wersję TypeScript (
1.7
lub nowszą ) i usuń wszelkie inne duplikaty. Zobacz także zrzut ekranu poniżej:Aby uzyskać dodatkowe informacje, przeczytaj ten post na moim blogu.
źródło
Rozwiązanie:
Dla mnie i jestem całkiem pewien, że dotyczy to również innych, było to spowodowane błędem w pliku tsconfig.json.
Musisz dodać „compileOnSave”: true. Ale w sekcji globalnej nie w 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" ] }
Z poważaniem,
Anders Obaj Basechat.
źródło
Wydaje się, że ten problem został rozwiązany dzięki najnowszej aktualizacji
TypeScript Language Services
rozszerzenia.Zapoznaj się z tą odpowiedzią, aby uzyskać instrukcje dotyczące stosowania tej aktualizacji.
źródło
W moim przypadku zainstalowałem Visual Studio Community 2015 wraz z VS 2012. Używałem Web Essentials do pisania na maszynie w 2012 roku, co wydawało się kolidować z 2015.
Odinstalowanie programu Web Essentials w 2012 r. Rozwiązało problem.
źródło
Z maszynopisem 2 musisz usunąć "outDir": z twojego tsconfig. Napraw błąd w Visual Studio.
źródło
We właściwościach projektu -> „Kompilacja TypeScript” możesz po prostu odznaczyć opcję „Nie emituj danych wyjściowych, jeśli zostaną zgłoszone jakiekolwiek błędy”. Zaznaczenie tego wydaje się dezaktywować transpilowanie przy zapisywaniu, gdzie występuje błąd lub nie.
źródło
To
"compileOnSave": true,
nie działało dla mnie. W końcu doszedłem do wniosku, że Visual Studio nie honoruje"compileOnSave": true,
wartości, jeśli jest zdefiniowana w innym.json
pliku, który rozszerzasz. Musi znajdować się w katalogu głównym, aby działał.źródło
zlokalizuj plik, tj. C: \ file.ts w swoim
terminal/cmd
i wpisztsc file.ts -w // watches for file changes and converts on save
źródło
Sprawdź, czy masz zainstalowaną wersję TypeScript, która jest skonfigurowana w projekcie. Jakoś nie otrzymałem ostrzeżenia, że nie mam zainstalowanego TypeScript 3.7, ale funkcja kompilacji przy zapisie przestała działać po cichu.
Po zainstalowaniu TypeScript 3.7 znów działał.
źródło
Nie jestem pewien, czy to komuś pomoże.
Myślałem, że mam problemy z kompilacją, ale kompilowanie odbywało się przy zapisywaniu. Po prostu nie przełączono paska narzędzi eksploratora rozwiązań, aby wyświetlić wszystkie pliki.
Plik był tam, czekając niecierpliwie na dodanie do projektu.
źródło
Dokładnie ten sam problem tutaj. Używam Visual Studio 2015 Update 3 i TypeScript 2.9.2.0. W narzędziach / opcjach / projektach i rozwiązaniach / zewnętrznych narzędziach internetowych podniosłem $ (PATH) do drugiej pozycji. Przy wszystkich tych konfiguracjach compileOnSave: true nie działa dla mnie. Rozwiązaniem obejściowym jest otwarcie wiersza poleceń, uruchomienie
ng build --watch
z boku i pozwolenie węzłowi na automatyczną kompilacjęźródło
Miałem podobny, ale nie ten sam problem w programie Visual Studio 2019
Zainstalowałem starszą wersję, TypeScript 2.9, zrestartowałem VS, a potem ożył
źródło