如何在.Net Core项目中禁用TypeScript编译?

29

我有一个包含TypeScript文件夹的Visual Studio 2015 ASP.Net Core项目。

我的问题是如何防止VS尝试编译TypeScript文件? 我不想对它们进行编译,无论是在保存还是构建时。

我已经尝试添加了下面的项目设置,但似乎没有任何影响。

<PropertyGroup>
  <TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>

目前,VS会抛出一个错误,tsc.exe退出,返回代码1,但是正如所述,我根本不想运行TS编译器。

我可以禁用VS使用的typescript.targets,但这并不实际,因为我需要它来处理其他项目。

2个回答

71

我花了一些时间在C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets文件中查找,发现了一个似乎可以完成任务的支持属性。

通过直接编辑项目文件并添加此属性组,将此属性添加到项目中:

<PropertyGroup>
  <!-- Makes the TypeScript compilation task a no-op -->
  <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
</PropertyGroup>

编辑:在评论中,@Chopin指出了此选项以及其他与Typescript MSBuild相关的选项的官方文档,在这里


6
这是有关TypeScript MSBuild选项的官方文档以及其他相关选项。在此处查看。 - Chopin
它运作正常。但令我烦恼的是,Asp.net core新的1.1.1版本中引入了一些TypeScript目标,这些目标无法在VS 2015中使用,只能在VS 2017中使用。通过添加这个属性组,所有问题得以解决,尤其是因为我根本不使用TypeScript :-) - Raffaeu
2
有人能解释一下为什么这不是一个复选框吗?它似乎是一个非常有用的选项。 - Simon_Weaver
在我的VS 2019.16.10.2上这个好像不起作用。奇怪的是,当有任何C#错误时,我会看到许多TS错误。没有C#错误时,也没有TS错误。 - ttugates

0

这个技巧确实适用于新版本的MSBuild。但是如果您仍然使用旧版本的MSBUild,例如在构建服务器上等,您也需要从csproj文件中删除这些行。

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

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

敬礼


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接