【问题标题】:Visual Studio .Net Core project uses the Typescript v1.8 compiler instead of v2.0Visual Studio .Net Core 项目使用 Typescript v1.8 编译器而不是 v2.0
【发布时间】:2016-10-13 23:25:40
【问题描述】:

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

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

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

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

在项目“C:\Users[...]”的文件“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets”中定位“PreComputeCompileTypeScriptWithTSConfig”。 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 正在使用 Microsoft SDK 中的 tsc.exe。

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

【问题讨论】:

  • 附加说明:这是一个 .Net Core 项目

标签: visual-studio msbuild typescript2.0


【解决方案1】:

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

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

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

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

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

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

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

当然,每次我想更新 tsc 时,这个解决方案都会很容易出现问题。但现在总比没有好。

【讨论】:

    【解决方案2】:

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

    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。所以,这行不通。您可以查看this 链接(paulvanbrenk 的回复)。

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

    【讨论】:

    • 感谢您的建议!但是,这是一个 .Net Core 项目,因此没有 .csproj 文件,而是一个 .xproj,并且您建议删除的行不存在于其中。如果有帮助,我会发布文件的内容。
    • @DougKent 这是与那个金块包相关的问题,我更新了我的答案。
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多