0

Problem

I've found that my TypeScript files only compile when I save them. However, when I build or rebuild the project, they do not compile. I'm using TypeScript 0.9.1.1.

When I check the build output of a new TypeScript project, it includes the following entry:

CompileTypeScript:
  C:\Program Files\Microsoft SDKs\TypeScript\tsc.exe  --module AMD --sourcemap --target ES3 "app.ts"

But my project doesn't produce this in its build output.

Setup

Here are the relevant parts of the project file:

<ItemGroup>
    <TypeScriptCompile Include="Scripts\app\example.ts" />
</ItemGroup>
<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptIncludeComments>true</TypeScriptIncludeComments>
    <TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>
<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

What I've checked

  • The files compile on build in new TypeScript projects, so it should be possible.
  • The targets file exists in the correct location
  • The project file configuration shown above appears to be correct when compared with a new TypeScript project
  • Compiling a new TypeScript project, which works fine
  • Cannot compile TypeScript files in Visual Studio 2012, but the symptoms of the problem are different to mine, and it's not clear if the author was using the same setup
  • Typescript will not properly compile in VS2012, but the symptoms of the problem are different to mine
  • The build action for each TypeScript file is set to TypeScriptCompile as shown above
Community
  • 1
  • 1
Sam
  • 40,644
  • 36
  • 176
  • 219

1 Answers1

2

After comparing the project file with a new TypeScript project file, I narrowed the problem down to the following:

The TypeScript targets file must be imported after the C# targets file.

In the code in the question, fix the problem by moving the following line up:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Sam
  • 40,644
  • 36
  • 176
  • 219