发布时如何包含TypeScript文件?

Gei*_*erg 23 deployment typescript visual-studio-2013 asp.net-mvc-5.1

我有一个MVC 5.1 Web应用程序,我最近开始使用TypeScript.我想使用sourcemapping,所以我在项目中包含了.ts,.js和.js.map文件.

当我发布应用程序(例如文件系统或Azure)时,只复制.js和.js.min文件,而不是.ts文件.这意味着我没有在已发布的网站上获得源映射.

TypeScript文件具有"构建操作":"TypeScriptCompile",我已经使用"不复制"和"始终复制"测试了"复制到输出目录",但仍未发布.ts文件.

发布应用程序时如何包含.ts文件?

(我使用VS1013 Update 2和TypeScript 1.0.1以及Web Essentials 2013 for Update 2)

Sta*_*kov 34

我通过编辑项目(csproj)文件实现了这一点.我将.ts(它们存储在TypeScriptCompile项目中)文件包含在Content项目中,即

  <Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
     <ItemGroup>
        <Content Include="@(TypeScriptCompile)" Condition="'$(Configuration)'=='Debug'"/>
     </ItemGroup>
  </Target>
Run Code Online (Sandbox Code Playgroud)

注意:由于条件,这包括仅用于Debug构建配置的TypeScript内容.

  • @GeirSagberg确保您发布'Debug'配置.或者只是删除Condition ="'$(Configuration)'=='Debug'" (5认同)
  • @Homer它应该在csproj文件中的<Target Name ="BeforeBuild">注释元素附近.确保在发布期间使用"调试"配置(当前发布设置,而不是vs中的项目设置). (4认同)

bdi*_*mag 5

根据Stas Berkov 的回答,我有条件地.ts仅在生成源映射时包含文件(如TypeScript Build项目属性选项卡中的配置)。

<Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
  <ItemGroup>
    <Content Include="@(TypeScriptCompile)" Condition="'$(TypeScriptSourceMap)' == 'true'"/>
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)

我在放在这个作为最后一个元素<Project>中的.csproj文件。