TypeScript не компилируется с WE3 и TS 0.9.1.1

Я только что обновился до последней версии WebEssentials v3, и файлы TS в моем проекте ASP MVC 4 больше не компилируются в JS. Я проверил, что флажок Параметры --> Текстовый редактор --> TypeScript --> Проект --> Автоматически компилировать файлы TypeScript, которые являются частью проекта, установлен, но при сохранении или компиляции ничего не происходит. мой проект. Я пытался удалить существующие файлы .js и .min.js, созданные WE2, но это не помогло. Я попытался добавить новый файл TS в свой проект, но не создал файл JS. Я переустановил TS 0.9.1.1 и это не помогло.

Нууу что делать? Я упускаю что-то очевидное? Что-то не работает или у меня просто неправильные ожидания?

Нужно ли мне возвращаться в WE2?

Обновление: я даже создал совершенно новый проект ASP MVC 4 C#, чтобы убедиться, что это не просто мой оригинальный проект, но я получил те же результаты.

Интересно, что я только что создал новый проект TypeScript, и мои файлы TS правильно скомпилировались при сохранении... Так что это интересно...


person Alex Dresko    schedule 26.08.2013    source источник
comment
Все это объясняется на вики-странице компиляции TypeScript при сохранении: typescript.codeplex. com/wikipage?title=Компиляция при сохранении   -  person Jaben    schedule 27.08.2013


Ответы (4)


В журнале изменений WE3 есть несколько ссылок, здесь описывается, как включить функцию компиляции при сохранении, см. http://typescript.codeplex.com/wikipage?title=Compile-on-Save для получения подробной информации.

Я создал пакет nuget под названием Ltc.MSBuild.TS0911WE3.targets, который поможет вам, просто откройте Package Manager Console, введите Install-Package Ltc.MSBuild.TS0911WE3.targets!

Перейдите на страницу Ltc.MSBuild.TS0911WE3.targets на сайте nuget.org.

person bigsan    schedule 26.08.2013
comment
Превосходно. Я создал тестовый проект, чтобы убедиться, что это работает. Это более элегантное решение, чем копирование/вставка всего необходимого кода в файл .xproj. - person Alex Dresko; 27.08.2013
comment
Благодарю вас! Это очень помогло. - person Doug; 01.10.2013
comment
Хм, у меня не работает. Он компилируется при сборке, но не при сохранении. :/ - person Gleno; 08.10.2013

Я не уверен, что это правильный метод решения проблемы, но вот что я сделал, чтобы "компилировать при сохранении" работал над моим проектом...

Заметив, что компиляция при сохранении работает при запуске нового проекта HTML Application with TypeScript, я сравнил его с моим неработающим проектом ASP MVC. Оказывается, в моем проекте ASP MVC отсутствовал этот фрагмент кода.

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptTarget>ES3</TypeScriptTarget>
    <TypeScriptRemoveComments>false</TypeScriptRemoveComments>
    <TypeScriptSourceMap>true</TypeScriptSourceMap>
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptTarget>ES3</TypeScriptTarget>
    <TypeScriptRemoveComments>true</TypeScriptRemoveComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />

Копирование/вставка этого в мой проект ASP MVC снова дало мне поддержку Compile On Save. Конечно, это все еще не совсем то, что я ожидал. Результирующие JS-файлы не добавляются в проект автоматически, поэтому мне пришлось делать это вручную. Мне также пришлось вручную сгруппировать файл JS с файлом TS, чтобы имитировать тот же опыт, что и с WE2.

Надеюсь, это поможет кому-то. Хотелось бы услышать отзывы о решении.

person Alex Dresko    schedule 26.08.2013
comment
+1 спасибо, что поделились. В следующем выпуске якобы будет лучшая поддержка. Лично мы использовали grunt github.com/basarat/grunt-ts. - person basarat; 26.08.2013
comment
Спасибо, что поделились этим - это работает, но, к сожалению, это также означает, что вам нужно установить TypeScript на свой сервер сборки (если он у вас есть). Разочаровывает тот факт, что параметр, помеченный как «Компилировать при сохранении», на самом деле означает «Компилировать при сохранении» или «Сборка». На данный момент я решил вернуться к Web Essentials 2.9, чтобы снова получить возможность компилировать при сохранении. - person John Reilly; 11.10.2013

Убедитесь, что в вашем файле .proj есть XML-раздел TypeScriptCompile. Вы можете скопировать из машинописного проекта, если его нет.

Вот спецификация: https://msbuildtypescript.codeplex.com/

person basarat    schedule 26.08.2013
comment
Привет @бассара. Насколько я понимаю, эта рекомендация добавляет в файл .xproj функцию компиляции TS при компиляции проекта. Это разумное дополнение, но не совсем то, о чем я спрашивал в ОП. Прошу прощения, если вопрос был коряво сформулирован. Кроме того, после добавления вашей рекомендации в мой файл проекта я получаю эту ошибку при компиляции: Ошибка 1 Задача CompileTypeScriptFiles не может быть загружена из сборки c:\projects\Test\NewTsWeTest\NewTsWeTest\MSBuild.TypeScriptCompile.dll. Не удалось загрузить файл или сборку... - person Alex Dresko; 26.08.2013

с помощью инструмента "Основные веб-приложения" (бесплатно, рекомендуется) включите панель предварительного просмотра в параметрах основных веб-приложений.

Инструменты --> Параметры --> Основы Интернета --> Typescript: показать панель предварительного просмотра[X]

Теперь каждый раз, когда вы сохраняете открытый файл TS, Web Essentials обеспечивает компиляцию файла (чтобы он мог его отображать), и вы можете обновлять свой код javascript во время работы проекта.

person user1852503    schedule 02.03.2014