Visual Studio(2017和2019)忽略TypeScriptCompileBlocked

时间:2019-09-17 10:06:19

标签: reactjs typescript visual-studio create-react-app

我在使用Visual Studio编译Typescript文件时遇到了一些问题,这引起了极大的麻烦,因为在项目运行时将首先使用已编译的create-react-app my-app --typescript文件,而不是使用SPA Development Server生成的文件。

我创建了一个React Application(.tsx),在添加新的.csproj文件之前,一切工作正常。由于某种原因,如果通过解决方案资源管理器添加了VS,VS将始终编译该文件。

我确保在<PropertyGroup> <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> {...} </PropertyGroup>

中禁用了Typescript编译
.tsx

我注意到的一件事是,当我添加一个新的<ItemGroup> <None Remove="<project>\src\<file>.tsx" /> </ItemGroup> <ItemGroup> <TypeScriptCompile Include="<project>\src\<file>.tsx" /> </ItemGroup> 文件时,VS将在项目文件中添加几个条目:

{{1}}

有趣的是,当我从项目中删除这些条目时,它仍将编译,直到重新启动VS,才有办法强制Visual Studio不编译 任何 打字稿文件,而不是将它们添加到项目文件中?或者这只是VS中的另一个错误,可以解决?

1 个答案:

答案 0 :(得分:0)

模板文件本身中存在一个导致脚本编译的设置,有两种处理方法,要么创建新的.tsx模板,要么更新现有的模板。脚本模板位于

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ItemTemplates\AspNetCore\Web\Scripts\1033\TypeScriptJsxFile

在tsxFile.vstemplate中,ProjectItem的{​​{1}}上有一个属性,该属性告诉VS编译文件,以修复从模板中删除`ItemType =“ TypeScriptCompile”的问题。查找部分:

TemplateContent

只需删除整个属性并保存,如果您要更新模板,则必须使用管理员权限来编辑文件:

<TemplateContent>
    <ProjectItem SubType="Code" ItemType="TypeScriptCompile" TargetFileName="$fileinputname$.tsx" ReplaceParameters="true">file.tsx</ProjectItem>
</TemplateContent>

创建新模板时确实遇到了一些问题,如果遇到麻烦,请see this question