Функция TypeScript "Compile on save" не работает в Visual Studio 2015


функция "компиляция при сохранении" не работает для меня после обновления до Visual Studio 2015. Когда я делаю изменения в .ts файл в моем проекте и сохранить, строка состояния в нижней части IDE говорит Output(s) generated successfully, но созданный .js файл не меняется.

вот что я пробовал:

  • добавление следующего в корень <Project> элемент в моем .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • проверка и сняв Опция "автоматически компилировать файлы TypeScript, которые не являются частью проекта" в Tools -> Options -> TypeScript -> Project:

  • двойная проверка, чтобы убедиться, что" компиляция при сохранении " проверяется в свойствах сборки TypeScript моего проекта:

что я упустил?

в качестве примечания, шаг компиляции TypeScript работает так, как ожидалось при запуске обычной сборки.

10 73

10 ответов:

для меня это был такой вариант в tsconfig.json:

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

перезапустите Visual Studio, чтобы это изменение вступило в силу.

я наткнулся на эту проблему сегодня: я исправил это с помощью нового "watch":true параметр компилятора, также доступный через JSON в самых последних версиях TypeScript:

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

после этого мне пришлось решить еще одну проблему, связанную со следующей ошибкой, которая появилась в окне вывода:

Object doesn't support property or method 'watchFile'

оказалось, что моя система использует устаревшую версию TypeScript (1.0.x), несмотря на то, что я был уверен, что у меня был более новый, который пришел с Visual Studio 2015 Update 1 (1.7). Если вы столкнулись с этой проблемой, вы можете легко проверить свою версию tsc, введя tsc -v из командной строки.

если он говорит 1.0.x или что-нибудь

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

если нет, обновите соответственно. Открой CPanel>система>Advanced>Переменные Среды выберите Системные Переменные и нажать кнопку Edit; просмотрите список в поисках любой ссылки на папку TypeScript, измените один из них, чтобы он указывал на вашу последнюю установленную версию TypeScript (1.7 или выше) и удалить любые другие простофили. Смотреть также скриншот ниже:

enter image description here

дополнительные сведения см. этот пост.

эта проблема, кажется, была решена с самым последним обновлением

устранение:

для меня, и я совершенно уверен, что это также относится и к другим, это было связано с ошибкой в tsconfig.формат JSON.

вам нужно добавить "compileOnSave": true. Но в глобальном разделе не внутри 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"
  ]
}

С уважением,

Андерс Как Basechat.

в моем случае я установил Visual Studio Community 2015 вместе с side VS 2012. Я использовал Web Essentials для typescript в 2012 году, который, казалось, конфликтовал с 2015 годом.

удаление Web Essentials в 2012 году Исправлена проблема для меня.

с typescript 2 вы должны удалить "outDir": из вашего tsconfig. Исправьте ошибку для меня в visual studio.

в свойствах проекта - > "TypeScript Build", вы также можете просто снять флажок " Не выдавать выходные данные, если какие-либо ошибки сообщаются."Проверив его, кажется, деактивирует транспилинг при сохранении, где есть ошибка или нет.

The "compileOnSave": true, не работал на меня. Я, наконец, понял, что Visual Studio не чтят "compileOnSave": true, значение, если оно определено в другом .json файл, который вы расширяете. Он должен быть в корне, чтобы он работал.

найдите файл, т. е. C:\file.ТС в своем terminal/cmd и типа

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

точно такая же проблема здесь. Я использую Visual Studio 2015 update 3 и TypeScript 2.9.2.0. В tools / options/projects and solutions / external web tools я обновил $(PATH) до второй позиции. Со всеми этими конфигурациями compileOnSave: true не работает для меня. Обходное решение-открыть командную строку, Выполнить ng build --watch на стороне и пусть узел позаботится о автоматической компиляции