Doug Kent
Doug Kent

Reputation: 855

Visual Studio .Net Core project uses the Typescript v1.8 compiler instead of v2.0

I'm using Visual Studio 2015 Pro, Update 3.

My question is how to instruct VS to use the version of the typescript compiler that I want it to use.

VS is refusing to use the Typescript 2.0 compiler, rather is using 1.8. I have installed, via Nuget in VS, Microsoft.Typescript.Compiler v2.0.3 and Microsoft.Typescript.MsBuild v2.0.3, to no avail.

Looking at the detailed output from MSBuild, I see the following:

Target "PreComputeCompileTypeScriptWithTSConfig" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets" from project "C:\Users[...].xproj" (target "CompileTypeScriptWithTSConfig" depends on it):

Using "VsTsc" task from assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\TypeScript.tasks.dll".

Task "VsTsc" C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\Users[...]\tsconfig.json"

Done executing task "VsTsc".

Done building target "PreComputeCompileTypeScriptWithTSConfig" in project "[...].xproj".

So it appears that VS is using the tsc.exe from the Microsoft SDK.

Anyone know how to instruct VS to use the version of tsc that I want it to use?

Upvotes: 0

Views: 1202

Answers (2)

Doug Kent
Doug Kent

Reputation: 855

@starain I really appreciate your efforts.

Unfortunately your suggestion still doesn't work for me. MSBuild/VS does not use the environment path to find tsc. If it were, it would already be finding the correct version. The correct path (to 2.0.3) is already in the environment, and the incorrect path (to 1.8) is not.

I hadn't seen the link you provided to the issue with nuget. This problem does at least appear to be an issue with the nuget installation.

Aided by setting the MSBuild output to "diagnostic" I have managed to figure out a work-around on my own.

In the .xproj file inside <PropertyGroup Label="Globals"> I inserted the following:

<TypeScriptToolsVersion>2.0.3</TypeScriptToolsVersion> <TscToolPath>C:\Users\[me]\.nuget\packages\Microsoft.TypeScript.MSBuild\2.0.3\tools\tsc</TscToolPath>

So far, it works beautifully except for one thing: Intellisense appears to still be using 1.8. I will leave that for a separate issue.

This solution could easily, of course, present a problem each time I want to update tsc. But for now it's a lot better than nothing.

Upvotes: 1

starian chen-MSFT
starian chen-MSFT

Reputation: 33728

You need to remove corresponding imported project from your project file.

  1. Right click your project in VS=>Unload project
  2. Right click your project again in VS=>Edit XXX.csproj
  3. Remove this code:

Microsoft.TypeScript.Default.props:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />

Microsoft.TypeScript.targets:

 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  1. (Optional) If this code isn’t included in your project file, please add it (related to the code of Step 3)

:

<Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.props" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.props')" />

<Import Project="..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.targets" Condition="Exists('..\packages\Microsoft.TypeScript.MSBuild.2.0.3\build\Microsoft.TypeScript.MSBuild.targets')" />

For .net core application, it has issue with that nuget package, the typescript reference in ASP.NET Core projects is through the Microsoft.DotNet.Web.targets. So, it won't work. You can check this link (paulvanbrenk's reply).

To use higher version of typescript compiler, you can install Typescript 2.0 and change environment variable path value to corresponding folder (C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.0)

Upvotes: 0

Related Questions