Подтвердить что ты не робот

Действие сборки TypeScriptCompile, похоже, ничего не делает

Когда я добавляю новый файл TypeScript в мое решение, система красиво дает мне (предварительно заполненный).ts файл с .js файлом чуть ниже. Эта конфигурация заставляет меня думать, что преобразование из TypeScript в JavaScript является автоматическим. Это предположение усиливается тем фактом, что файл .ts имеет Build Action 'TypeScriptCompile'. Однако, независимо от того, что я делаю (сохранить измененный ts, скомпилировать проект...), ничего действительно не происходит.

Я знаю, что могу добавить шаги предварительной сборки для проекта, но мне бы очень хотелось, чтобы действие сборки TypeScriptCompile автоматически включалось, так что мне просто нужно сохранить файл для файла .js, который нужно восстановить. Что мне нужно сделать, чтобы "TypeScriptCompile" работал как ожидалось/желал?

4b9b3361

Ответ 1

У меня была такая же проблема при попытке использовать TypeScript в проекте MVC4, но разрешила проблему!

Поместите следующие строки в файл проекта, используя ваш любимый текстовый редактор. Существует прокомментированный раздел BeforeBuild, обычно уже присутствующий в конце файла proj, который вы можете заменить этими строками. Перезагрузите проект, и вы хорошо пойдете. Теперь файлы .js будут созданы во время компиляции.

<Target Name="BeforeBuild">
  <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

Хорошо посмотрите на точный путь, хотя он может отличаться (например, если у вас есть другая версия SDK TypeScript). Аналогично, если tsc.exe уже находится в вашей переменной среды PATH, вы можете использовать команду version-agnostic:

<Target Name="BeforeBuild">
  <Exec Command="&quot;tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

Наконец, как отмечено в комментариях, вы можете добавить -c для сохранения комментариев в командной строке. Это позволяет инструментам, таким как сборка кассет и ресурсов asp.net, извлекать ссылки и отображать вещи в правильном порядке.

Ответ 2

У некоторых людей была эта проблема, включая меня. Исправить это вручную установить расширение typescript Visual Studio.

Установщик находится здесь:

"C:\Program Files (x86)\Microsoft SDKs\ TypeScript\0.8.0.0\TypeScriptLanguageService.vsix"

или здесь на машинах x86:

"C:\Program Files\Microsoft SDKs\ TypeScript\0.8.0.0\TypeScriptLanguageService.vsix"

Ответ 3

Если у вас все еще есть проблемы компиляция typescript файлов, возможно, вы захотите проверить приложение, которое я только что выпустил. Вы можете скомпилировать файлы всего одним нажатием кнопки.

Ответ 4

Хорошо, я переустановил все, включая файл vsix. По-видимому, когда я запускаю свой проект сейчас, файл .ts автоматически преобразуется в файл .js(без пользовательских действий сборки). Это нормально. Было бы лучше, если бы эти файлы соответствовали другим генераторам кода тем, что они компилируются, когда исходный файл сохраняется. Я бы написал для него свою собственную реализацию SingleFileGenerator, но я еще не знаю, как вызвать .js из С#.

Ответ 5

Если вы используете Visual Studio 2013 с последним TypeScript 1.5, вам может потребоваться установить TypeScript инструменты для Visual Studio. Я также рекомендовал установить Web Essentials, который будет вызывать .ts script компиляцию файлов при сохранении (помимо многих других полезных функций).

Затем следуйте инструкциям, которые Visual Studio создает для новых веб-проектов в файле .csproj.

1) Импортируйте свойства MSBuild TypeScript, добавив следующий элемент под root Project:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />

2) Импортировать MSBuild TypeScript цель сборки

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

3) Настройте целевую версию TypeScript под элементом Project/PropertyGroup

<TypeScriptToolsVersion>1.5</TypeScriptToolsVersion>