禁用 MSBuild TypeScript 编译

Posted

技术标签:

【中文标题】禁用 MSBuild TypeScript 编译【英文标题】:Disable MSBuild TypeScript Compile 【发布时间】:2017-07-14 19:02:18 【问题描述】:

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

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

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

感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

将属性<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> 添加到您的csproj 文件中的PropertyGroup(我将它添加到配置标签下)。这应该会禁用所有基于 msbuild 的 TS 编译。

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

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

【讨论】:

当然也可以放在csproj.user文件中。如果不想打扰团队成员。 为了完整起见,这里是提到这一点的文档的链接。它在最底部。 typescriptlang.org/docs/handbook/… 为什么微软没有在 Visual Studio 的选项或项目的属性中添加复选框???为什么一定要手动编辑proj文件??? 我还必须将 typescript 文件属性中的构建操作从 Typescript File 更改为 None 以防止 vs2017 编译我的文件。 这也可以通过设置相同的参数在 msbuild 命令行上禁用:"/p:TypeScriptCompileBlocked=True"【参考方案2】:

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

<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>

【讨论】:

【参考方案3】:

我遇到了这个问题,测试了此处发布的所有内容,但均未成功,

但是在添加了这个之后,事情就奏效了:

<TypeScriptToolsVersion>3.9</TypeScriptToolsVersion>

似乎我使用的版本无论设置如何都可以编译。

【讨论】:

【参考方案4】:

其他解决方案都不适合我,这个导致项目加载错误(VS 2019 - 16.9.4)

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

做同样事情的另一种方法(尽管开销很小)是从编译索引中删除所有 TS。

<TypeScriptCompile Remove="*" />

我使用它来避免编译节点模块,如下所示:

<TypeScriptCompile Remove="node_modules\**" />

【讨论】:

在 VS 16.9.4 中将 &lt;TypeScriptCompile Remove="*" /&gt; 添加到 csproj 的属性组会得到 error : The attribute "Remove" in element &lt;TypeScriptCompile&gt; is unrecognized. TypeScriptCompile 应该用在 ItemGroup 元素中。【参考方案5】:

我已经配置了所有这些,但仍然没有解决问题 (在视觉工作室 2019 中)。 我还添加了这个:

 <TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>

并重新启动视觉工作室。之后,它开始为我工作。

【讨论】:

这对我也有用。不过足以重新加载项目。【参考方案6】:

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

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

【讨论】:

以上是关于禁用 MSBuild TypeScript 编译的主要内容,如果未能解决你的问题,请参考以下文章

msbuild编译

自动编译批处理设置(MSBuild)

禁用代码分析输出 MSBuild

msbuild发布web应用程序

MSBuild 中的 FxCop 和禁用 CA0060 异常

禁用MSBuild中的发布