TFS 2010构建编译TypeScript版本0.9.1.1

时间:2013-09-05 15:39:39

标签: visual-studio-2012 msbuild tfs2010 typescript

我希望停止在TFS源代码控制中包含生成的JavaScript文件,但我还没有设法让编译器在构建上运行。

我已关注this chap's example并编辑了项目文件给我:

  <ItemGroup>
    <TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
  </ItemGroup>
  <Target Name="BeforeBuild">
    <Message Text="Before Build" Importance="high" />
    <CallTarget Targets="TypeScriptBuild"/>
  </Target>
  <Target Name="TypeScriptBuild"  Inputs="@(TypeScriptCompile)" Outputs="%(Identity).Dummy" Condition="'$(CompileTypeScript)'=='true'">
    <Message Text="Building typescript file - @(TypeScriptCompile)"  Importance="high" />
    <Exec Command="&quot;$(MSBuildProgramFiles32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\tsc&quot; -target ES3 &quot;@(TypeScriptCompile)&quot;" />
  </Target>

我已经更改了tsc可执行文件所在的文件位置并删除了TypeScript版本信息,但它没有为我做任何事情。我是这个构建的完全新手,所以会感谢任何帮助,或者如何调试它的提示。

修改1 删除

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

因为它是多余的 - 这是为项目中的每个TypeScript文件单独添加的。

我得到的唯一警告是关于不确定的单元测试。我假设<Message Text="Before Build" Importance="high" />会产生某种日志消息,但我无法在任何地方看到它。

编辑2 通过放置

使其在Visual Studio 中本地工作
<Target Name="BeforeBuild">
  <Message Text="Compiling typescript...">
  </Message>
<Exec Command="&quot;$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\tsc&quot; -target ES3 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />

在.csproj文件的末尾。出于某种原因,当TFS构建它时,这不起作用。如果我将TypeScript编译器文件位置更改为无意义的抱怨,但是当它正确时,不会生成任何JavaScript文件。

1 个答案:

答案 0 :(得分:1)

你真的不应该这样做。在</project>

之前确保此行位于csproj中
<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />

然后在构建计算机上安装TypeScript。您还需要确保Build Action文件的.ts设置为TypeScriptCompile。此时,TypeScript将编译.ts文件并生成js文件。您不会(也不应该)将.js文件检查到您的代码库中。

单元测试

您真的希望使用其余代码构建单元测试。更重要的是,您可以在构建时运行这些单元测试,如果其中任何一个测试失败,则使用它们来使构建失败!

结帐this post on msdnthis post on codeplex以帮助您入门。它将涉及使用Chutzpah。此外,请注意,使用Chutzpah时,.js捆绑/交付的方式可能会有所不同,因为Chutzpah必须为您构建该捆绑包,而我不确定您的实际网站是如何进行的。