Как мне добавить typescript в существующий Asp.Net Проект MVC?[дубликат]
-
12-12-2019 - |
Вопрос
Мне нравится идея, лежащая в основе typescript, но, похоже, я не могу понять, как включить ее в проект ASP.Net MVC.Я уже установил расширение Visual Studio, но, похоже, не могу найти пример или документацию о том, как добавить *.ts
файлы, которые компилируются в *.js
Файлы.
Редактировать:На самом деле, должен ли я повторить то, как в примере Win8 .jsproj
включает в себя и обрабатывает .ts
файлы?Или это будет работать только для проектов HTML / JS Win8?
Решение
Предупреждение: Этот ответ теперь довольно устарел, поскольку и Typescript, и MVC значительно изменились с момента этого ответа.Я попробую обновить позже.- Ричкодер
Благодаря Сохни за ответом.
Вы можете добавить файлы TypeScript в существующий проект, используя диалоговое окно Добавить > Новый элемент. Пожалуйста, обратите внимание, что элемент 'Typescript File' находится не в веб-группе, а в ее родительской, в данном случае Visual C #.
Это должно добавить файл TypeScript, а Visual Studio сделает все остальное.
Затем вам нужно добавить эти строки в файл проекта:
<ItemGroup>
<AvailableItemName Include="TypeScriptCompile" />
</ItemGroup>
<ItemGroup>
<TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
</ItemGroup>
<Target Name="BeforeBuild">
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" IgnoreExitCode="true" />
</Target>
У меня это сработало идеально, но, пожалуйста, прокомментируйте, если у вас возникнут какие-либо проблемы.
Другие советы
Это правильно.все, что вам нужно, это цель ms build для сборки файлов .ts в файлы .js.Пример Win8 показывает цель BeforeBuild для вызова tsc для всех файлов, принадлежащих ItemGroup TypeScriptCompile, которая определяется как $(ProjectDir)***.ts (или для всех файлов .ts в вашем проекте).
Репликация этого шаблона должна работать в любом проекте msbuild, а не только в проектах Win8.
Вот пример того, о чем я говорю:Добавьте это в любой проект msbuild, и вы должны скомпилировать любой файл .ts в файл equivialnt .js, когда начнется ваша сборка..
<ItemGroup>
<TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
</ItemGroup>
<Target Name="TypeScriptCompile" BeforeTargets="Build">
<Message Text="Compiling TypeScript files" />
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
Я собрал пакет nuget, который добавляет целевой файл msbuild в ваш проект.Он запустит компилятор tsc и очистит его выходные данные, чтобы вы могли дважды щелкнуть по ошибкам в Visual Studio и перейти к файлу / строке / столбцу.
https://www.nuget.org/packages/Sholo .Машинописный текст.Сборка
Вам нужно установить действие сборки в окне свойств на 'TypeScriptCompile' для всего, что вы хотите, чтобы tsc скомпилировала.После нескольких дней работы с TypeScript я обнаружил, что для файлов .ts, на которые ссылаются, должно быть установлено значение TypeScriptCompile, но не для файлов, на которые только ссылаются, а для ymmv.Кроме того, вам может потребоваться показать все файлы и добавить исходный файл .js.Если вы хотите сгруппировать связанные файлы .ts /.js /.d.ts вместе, взгляните на расширение VSCommands.Рабочий процесс также довольно хорош с NetDemon / подобными расширениями.
Если вы используете Объединение в пакеты и минимизация, Я только что выпустил реализацию IBundleTransform , которая компилирует TypeScript в Javascript.Он находится на ГитХаб и NuGet (Установочный пакет TypeScriptBundleTransform).Если вы еще не используете пакетирование и минимизацию, на это стоит взглянуть!
Обновить:
Просто установите Веб-основы 2012 плагин, у вас будет автоматическая компиляция при сохранении - как для .js, так и .min.js и аккуратный разделенный вид, позволяющий видеть выходные данные JavaScript рядом с вашим кодом TypeScript.
Это грубый метод, который я использовал:
Щелкните правой кнопкой мыши ваш проект> Свойства> События сборки
Поле предварительной сборки вставьте это (рекурсивно создает все файлы .ts в проекте):
forfiles /S /P $(ProjectDir) /m *.ts /c "cmd /c tsc @file"
Для создания определенного файла ввода:
tsc $(ProjectDir)MyScripts/myfile.ts
Я уверен, что есть лучший способ сделать это.
Если вы используете Microsoft ASP.NET Платформа веб-оптимизации (он же объединение и минимизация), затем попробуйте использовать Комплектный Трансформатор с установленным модулем BundleTransformer.Машинописный текст.В дополнение к компиляции TypeScript-кода в JS, вы также можете произвести минимизацию сгенерированного JS-кода с помощью других модулей Bundle Transformer: Пакет-преобразователь.Microsoft Ajax, Комплект-трансформер.Yui, Преобразователь пакета.Закрытие, Преобразователь пакета.JSMin, Преобразователь пакета.UglifyJS и Преобразователь пакетов.Упаковщик.