Visual Studio .Net Core 项目使用 Typescript v1.8 编译器而不是 v2.0
Visual Studio .Net Core project uses the Typescript v1.8 compiler instead of v2.0
我正在使用 Visual Studio 2015 Pro,更新 3。
我的问题是如何指示 VS 使用我希望它使用的打字稿编译器版本。
VS 拒绝使用 Typescript 2.0 编译器,而是使用 1.8。我已经通过 VS 中的 Nuget 安装了 Microsoft.Typescript.Compiler
v2.0.3 和 Microsoft.Typescript.MsBuild
v2.0.3,但无济于事。
查看 MSBuild 的详细输出,我看到以下内容:
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.8\tsc.exe --project "C:\Users[...]\tsconfig.json"
Done executing task "VsTsc".
Done building target "PreComputeCompileTypeScriptWithTSConfig" in project "[...].xproj".
看来 VS 正在使用 Microsoft SDK 中的 tsc.exe
。
有人知道如何指示 VS 使用我希望它使用的 tsc
版本吗?
您需要从项目文件中删除相应的导入项目。
- 在 VS 中右键单击您的项目=>卸载项目
- 再次在 VS 中右键单击您的项目=>编辑XXX.csproj
- 删除此代码:
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')" />
- (可选)如果您的项目文件中没有此代码,请添加(与步骤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 核心项目中的打字稿参考是通过 Microsoft.DotNet.Web.targets。所以,这是行不通的。您可以查看this link(paulvanbrenk 的回复)。
要使用更高版本的 typescript 编译器,可以安装 Typescript 2.0 并将环境变量路径值更改为相应的文件夹 (C:\Program Files (x86)\Microsoft SDKs\TypeScript.0)
@starain 非常感谢您的努力。
很遗憾,您的建议对我仍然无效。 MSBuild/VS不使用环境路径查找tsc。如果是的话,它已经找到了正确的版本。正确的路径(到 2.0.3)已经在环境中,错误的路径(到 1.8)没有。
我没有看到你提供给 nuget 问题的 link。这个问题至少看起来是 nuget 安装的问题。
在将 MSBuild 输出设置为 "diagnostic" 的帮助下,我设法自己找到了解决方法。
我在<PropertyGroup Label="Globals">
里面的.xproj文件中插入了以下内容:
<TypeScriptToolsVersion>2.0.3</TypeScriptToolsVersion>
<TscToolPath>C:\Users\[me]\.nuget\packages\Microsoft.TypeScript.MSBuild.0.3\tools\tsc</TscToolPath>
到目前为止,除了一件事,它工作得很好:Intellisense 似乎仍在使用 1.8。我会把它留到另一个问题。
当然,这个解决方案很容易在我每次更新 tsc 时出现问题。但现在总比没有好很多。
我正在使用 Visual Studio 2015 Pro,更新 3。
我的问题是如何指示 VS 使用我希望它使用的打字稿编译器版本。
VS 拒绝使用 Typescript 2.0 编译器,而是使用 1.8。我已经通过 VS 中的 Nuget 安装了 Microsoft.Typescript.Compiler
v2.0.3 和 Microsoft.Typescript.MsBuild
v2.0.3,但无济于事。
查看 MSBuild 的详细输出,我看到以下内容:
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.8\tsc.exe --project "C:\Users[...]\tsconfig.json"
Done executing task "VsTsc".
Done building target "PreComputeCompileTypeScriptWithTSConfig" in project "[...].xproj".
看来 VS 正在使用 Microsoft SDK 中的 tsc.exe
。
有人知道如何指示 VS 使用我希望它使用的 tsc
版本吗?
您需要从项目文件中删除相应的导入项目。
- 在 VS 中右键单击您的项目=>卸载项目
- 再次在 VS 中右键单击您的项目=>编辑XXX.csproj
- 删除此代码:
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')" />
- (可选)如果您的项目文件中没有此代码,请添加(与步骤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 核心项目中的打字稿参考是通过 Microsoft.DotNet.Web.targets。所以,这是行不通的。您可以查看this link(paulvanbrenk 的回复)。
要使用更高版本的 typescript 编译器,可以安装 Typescript 2.0 并将环境变量路径值更改为相应的文件夹 (C:\Program Files (x86)\Microsoft SDKs\TypeScript.0)
@starain 非常感谢您的努力。
很遗憾,您的建议对我仍然无效。 MSBuild/VS不使用环境路径查找tsc。如果是的话,它已经找到了正确的版本。正确的路径(到 2.0.3)已经在环境中,错误的路径(到 1.8)没有。
我没有看到你提供给 nuget 问题的 link。这个问题至少看起来是 nuget 安装的问题。
在将 MSBuild 输出设置为 "diagnostic" 的帮助下,我设法自己找到了解决方法。
我在<PropertyGroup Label="Globals">
里面的.xproj文件中插入了以下内容:
<TypeScriptToolsVersion>2.0.3</TypeScriptToolsVersion>
<TscToolPath>C:\Users\[me]\.nuget\packages\Microsoft.TypeScript.MSBuild.0.3\tools\tsc</TscToolPath>
到目前为止,除了一件事,它工作得很好:Intellisense 似乎仍在使用 1.8。我会把它留到另一个问题。
当然,这个解决方案很容易在我每次更新 tsc 时出现问题。但现在总比没有好很多。