禁用 MSBuild TypeScript 编译

103

对于像ASP.NET MVC5这样的Visual Studio项目,如何在构建/调试时禁用TypeScript文件的编译?

我目前已将tsconfig.json中的compileOnSavebuildOnSave设置为false。是否需要添加一些内容到项目的.csproj以确保它不会被编译?

在调试ASP.NET MVC5项目时,它会编译所有的.ts文件。

感谢您能提供的任何帮助。

8个回答

190

此处所述,您可以在csproj文件的PropertyGroup中添加属性<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>(我将其添加到Configuration标签下)。这将禁用所有基于msbuild的TS编译。

启用此设置后,您不需要tsconfig.json设置compileOnSave/buildOnSave。

如果您使用较旧版本的Visual Studio(我隐含地考虑了VS 2017或2015年的xproj),则该属性可能为<TypeScriptEnabled>false</TypeScriptEnabled>


6
当然,它也可以放在csproj.user文件中,如果不想打扰团队成员的话。 - Mohayemin
5
为了完整起见,这是提到此事的文档链接,它在页面底部。 https://www.typescriptlang.org/docs/handbook/compiler-options-in-msbuild.html - jktravis
8
为什么微软没有在Visual Studio的选项或项目属性中加入复选框呢?为什么我们必须手动编辑proj文件呢? - barrypicker
2
我还必须更改TypeScript文件属性中的构建操作,从“TypeScript文件”更改为“无”,以防止vs2017编译我的文件。 - cmxl
6
同样的参数也可以在 msbuild 命令行中禁用,方法是将其设置为 "/p:TypeScriptCompileBlocked=True"。 - Kiarash Zamanifar
显示剩余3条评论

5

我已经配置了所有内容,但仍然无法解决问题(在Visual Studio 2019中)。 我额外添加了这个:

 <TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>

然后重新启动了Visual Studio。之后,它开始为我工作。


这对我也起作用了。只需要重新加载项目即可。 - Oskar Jensson Fjeld

4

对我来说,其他解决方案都不起作用,而这个方案在项目加载时引发了错误(VS 2019 - 16.9.4)。

<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>  // doesn't work for me

另一种做相同事情的方法(虽然带有非常小的开销)是将所有的TS从编译索引中移除。

<TypeScriptCompile Remove="*" />

我用这个方法来避免编译 Node 模块,像这样:
<TypeScriptCompile Remove="node_modules\**" />

3
添加`<typescriptcompile remove="*"></typescriptcompile>在 VS 16.9.4 中,将 csproj 的属性组返回时出现错误:“<typescriptcompile>”元素中的“Remove”属性无法识别。 - ttugates
4
应该在一个ItemGroup元素中使用TypeScriptCompile - benmccallum

3

以下方法对我有效(.NET 6,VS2022,ASP.NET Core + Angular项目)。 将以下设置添加到您的*.csproj文件中:

<PropertyGroup>
        <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
</PropertyGroup>

3

对于Visual Studio 2015,在PropertyGroup下添加以下行有所帮助。

<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>

2

我遇到了这个问题,在这里测试了所有发布的解决方法,但都没有成功。

但是在添加以下内容后,问题得以解决:

<TypeScriptToolsVersion>3.9</TypeScriptToolsVersion>

看起来我使用的版本无论设置如何都可以编译。


0
也许这会对某些人有所帮助:
我在VS2022中的观察是,当启用“工具”->“环境”->“预览功能”->“使用.NET SDK的预览版本(需要重新启动)”时,这些属性以及其他一些属性似乎被忽略了。

0

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