如何将typescript添加到现有的Asp.Net MVC项目中?

Ric*_*der 43 asp.net-mvc typescript

我喜欢打字稿背后的想法,但似乎无法弄清楚如何将它包含在ASP.Net MVC项目中.我已经安装了Visual Studio扩展,但我似乎无法找到有关如何添加*.ts编译成*.js文件的文件的示例或文档.

编辑:实际上,我应该复制Win8示例.jsproj包含和处理.ts文件的方式吗?或者这只适用于HTML/JS Win8项目?

Ric*_*der 25

警告:这个答案现在相当过时,因为这个答案后,Typescript和MVC都发生了重大变化.我稍后会尝试更新. - Richcoder

感谢Sohnee的回答.

您可以使用"添加">"新建项"对话框将TypeScript文件添加到现有项目中. exampleImage 请注意,'Typescript File'项不在Web组下,而是在它的父级下,在本例中是Visual C#.

这应该添加一个TypeScript文件,Visual Studio将完成剩下的工作.

然后,您需要将这些行添加到项目文件中:

 <ItemGroup>
    <AvailableItemName Include="TypeScriptCompile" />
 </ItemGroup>
 <ItemGroup>
    <TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
 </ItemGroup>
 <Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" IgnoreExitCode="true" />
 </Target>
Run Code Online (Sandbox Code Playgroud)

它对我来说很完美,但如果您遇到任何问题,请发表评论.

  • 另一个替代方案是执行第一步,但安装优秀的扩展Web Essentials 2012.它为您提供了在保存和编译时进行编译的选项,并且主要为您处理所有事情. (6认同)

moh*_*azy 19

那是正确的.您只需要将.ts文件构建到.js文件中的ms构建目标.Win8示例显示了一个beforeBuild目标,用于在属于itemGroup TypeScriptCompile的所有文件上调用tsc,该文件定义为$(ProjectDir)***.ts(或项目中的所有.ts文件).

复制此模式应该适用于任何msbuild项目,而不仅仅是Win8项目.

以下是我正在讨论的示例:将其添加到任何msbuild项目中,并且您应该在构建开始时将任何.ts文件编译到等效的.js文件中.

<ItemGroup> 
   <TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
</ItemGroup>


<Target Name="TypeScriptCompile" BeforeTargets="Build">
   <Message Text="Compiling TypeScript files" />
   <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; -target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>
Run Code Online (Sandbox Code Playgroud)


sco*_*732 7

我把一个nuget包放在一起,将一个msbuild目标文件添加到你的项目中.它将运行tsc编译器并清理其输出,以便您可以双击Visual Studio中的错误并跳转到文件/行/列.

https://www.nuget.org/packages/Sholo.TypeScript.Build

您需要将属性窗口中的构建操作设置为'TypeScriptCompile',以用于您希望tsc编译的任何内容.从修补TypeScript的几天开始,我发现正在进行引用的.ts文件应该设置为TypeScriptCompile,但是只引用的文件不应该,而是ymmv.此外,您可能需要显示所有文件并添加原始.js文件.如果要将相关的.ts/.js/.d.ts文件组合在一起,请查看VsCommands扩展.NetDemon /类似扩展的工作流程也很不错.