0

我正在使用 Visual Studio 2015 Pro,更新 3。

我的问题是如何指示 VS 使用我希望它使用的 typescript 编译器的版本。

VS 拒绝使用 Typescript 2.0 编译器,而是使用 1.8。我已经通过 VS 中的 Nuget 安装了Microsoft.Typescript.Compilerv2.0.3 和Microsoft.Typescript.MsBuildv2.0.3,但无济于事。

查看 MSBuild 的详细输出,我看到以下内容:

从项目“C:\Users[...].xproj”(目标“CompileTypeScriptWithTSConfig”取决于它):

使用程序集“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\TypeScript.tasks.dll”中的“VsTsc”任务。

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

完成执行任务“VsTsc”。

在项目“[...].xproj”中完成构建目标“PreComputeCompileTypeScriptWithTSConfig”。

所以看起来VS正在使用tsc.exe来自Microsoft SDK的。

任何人都知道如何指示 VS 使用tsc我希望它使用的版本?

4

2 回答 2

1

@starain 我非常感谢您的努力。

不幸的是,您的建议仍然对我不起作用。MSBuild/VS 不使用环境路径来查找 tsc。如果是,它已经找到了正确的版本。正确的路径(到 2.0.3)已经在环境中,不正确的路径(到 1.8)不是。

我没有看到您提供的有关 nuget 问题的链接。这个问题至少似乎是 nuget 安装的问题。

在将 MSBuild 输出设置为“诊断”的帮助下,我设法自己找到了解决方法。

在里面的 .xproj 文件中,<PropertyGroup Label="Globals"> 我插入了以下内容:

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

到目前为止,它运行良好,除了一件事:Intellisense 似乎仍在使用 1.8。我将把它留给一个单独的问题。

当然,每次我想更新 tsc 时,这个解决方案很容易出现问题。但就目前而言,它总比没有好。

于 2016-10-13T15:01:51.090 回答
0

您需要从项目文件中删除相应的导入项目。

  1. 在VS中右键单击您的项目=>卸载项目
  2. 在 VS=>Edit XXX.csproj 中再次右键单击您的项目
  3. 删除此代码:

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. (可选)如果您的项目文件中没有包含此代码,请添加(与步骤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')" />

对于 .net 核心应用程序,该 nuget 包存在问题,ASP.NET Core 项目中的打字稿引用是通过 Microsoft.DotNet.Web.targets。所以,这行不通。您可以查看链接(paulvanbrenk 的回复)。

要使用更高版本的 typescript 编译器,您可以安装Typescript 2.0并将环境变量路径值更改为相应的文件夹 (C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.0)

于 2016-10-10T05:29:26.927 回答