В TypeScript 1.3 для Visual Studio 2013 отсутствует каталог SDK (tsc.exe)

Typescript v1.3 был анонсирован сегодня, поэтому я установил обновление Power Tools для VS2013.

После установки я вижу, что Visual Studio теперь знает о "защищенных" типах ключевых слов и кортежей, и это здорово!

Но затем я изменил атрибут TypeScriptToolsVersion в моем файле *.csproj с 1.1 до 1.3:

<TypeScriptToolsVersion>1.3</TypeScriptToolsVersion>

После этого я получаю следующую ошибку при сборке:

Указанное расположение исполняемого файла задачи "C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.3\tsc.exe" недопустимо.

Папка "1.3" не была создана установщиком.

Как обходной путь, я смог заставить его работать, просто сделав копию компилятора 1.1.

Кто-нибудь знает, почему папка 1.3 не была включена в этот выпуск?

Примечание: использование VS Professional 2013 (обновление 12.0.30723.00 3)

3 ответа

Решение

Текущий выпуск 1.3 устанавливается в папку 1.1, и новые проекты также устанавливают для свойства в файле проекта значение "1.1" (так как значение этого элемента - это то, что мы добавляем в "C:\Program Files (x86)" \Microsoft SDKs\TypeScript"для поиска компилятора, поэтому это должно быть синхронизировано).

Для компилятора у нас может быть несколько версий бок о бок (как видно из папок 1.0 и 1.1), поэтому для компиляции проекта будет использоваться версия компилятора, соответствующая параметру TypeScriptToolsVersion в проекте. Мы не продвигаем целевую версию автоматически (для того, чтобы сделать возможным круговое переключение проекта с колледжами, которые не такие передовые, как вы, ребята;-)

Однако для языковой службы в Visual Studio может присутствовать только одна версия - последняя установленная версия. Поскольку мы стремимся поддерживать обратную совместимость, это не должно влиять на работу при открытии более старых версий проекта (кроме того, чтобы быть более разрешительным для новых функций, которые потерпят неудачу во время компиляции со старым компилятором).

Мы предупреждаем, когда вы открываете проект с более ранней версией, указанной, что версия проекта не синхронизирована с языковой службой, и это может произойти (что-то вроде "Ваш файл проекта использует более старую версию компилятора TypeScript и инструменты, чем поддерживаются этим"). версия Visual Studio. В вашем проекте могут использоваться функции языка TypeScript, которые приведут к ошибкам при компиляции с этой версией инструментов TypeScript"). Это безобидное предупреждение, и вы можете продолжить редактирование проекта. Если вы добавите новые функции через языковую службу, не поддерживаемую указанной версией компилятора, во время сборки возникнет ошибка (согласно предупреждению).

Это не идеально, и мы обсуждаем, как мы можем сделать это лучше. Извините за путаницу.

Когда я обновил до TypeScript 1.3 в проекте tsUnit, набор изменений показал, что версия инструментов изменилась с:

<TypeScriptToolsVersion>1.0</TypeScriptToolsVersion>

к

<TypeScriptToolsVersion>1.1</TypeScriptToolsVersion>

Таким образом, "Версия инструментов" не соответствует языковой версии.

  • TypeScript 1.1 -> ToolsVersion 1.0
  • TypeScript 1.3 -> ToolsVersion 1.1

Стоит отметить, что язык, компилятор и инструменты могут иметь разные версии. Бежать tsc -v чтобы увидеть языковую версию, которая является версией 1.3.0.0, если у вас последняя версия (по состоянию на ноябрь 2014 года).

Кто-нибудь знает, почему папка 1.3 не была включена в этот выпуск?

Этот комментарий разъясняет это: https://github.com/Microsoft/TypeScript/issues/1138 Цитата:

У вас должны быть языковые службы 1.3 с версией инструментов 1.1, а папка 1.1 должна содержать компилятор 1.3. Я понимаю, что это сбивает с толку

Другие вопросы по тегам