TypeScript Функция компиляции с сохранением не работает в 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 работает так, как ожидалось, при срабатывании регулярной сборки.

Ответ 1

Эта проблема, похоже, была устранена с помощью последнего обновления расширения TypeScript Language Services.

См. этот ответ для получения инструкций по применению этого обновления.

Ответ 2

Для меня это была опция tsconfig.json:

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

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

Ответ 3

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

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

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

Object doesn't support property or method 'watchFile'

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

Если он говорит 1.0.x или что- 1.7, вероятно, это связано с тем, что у вас есть несколько старых ссылок в переменной среды PATH. Убедитесь, что у вас установлено 1.7 или более поздней версии, проверив внутри папки Microsoft SDKs, которая используется Visual Studio для установки пакетов TypeScript по мере их обновления:

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

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

введите описание изображения здесь

Для получения дополнительной информации прочитайте этот пост.

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

Решение:

Для меня, и я уверен, что это также относится к другим, это было связано с ошибкой в ​​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.

Ответ 9

только каталог goto, где файл typescript находится в командной строке и запускает команду, вы увидите, что при каждом сохранении вашего файла .ts файл .js автоматически обновляется.

то есть.

c:\Project>tsc typescriptFileName.ts -w

теперь минимизируйте командную строку