我正在使用 ReSharper 2016.2 在 Visual Studio 2015 中使用 React 和 TypeScript 开发 ASP.NET 5 MVC 6 Web 应用程序。我正在使用一个tsconfig.json
看起来像这样的:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": false,
"removeComments": false,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"jsx": "react"
},
"exclude": [
"node_modules",
"wwwroot",
"typings/index.d.ts",
"typings/index",
"jspm_packages"
],
"compileOnSave": true
}
如您所见,noEmitOnError
是错误的。但是,在安装 Update 3 后,如果出现任何输入错误,Visual Studio 将不再让我构建解决方案。每个 TS 错误都会在错误列表中报告两次:
第一个错误(没有错误代码)会阻止构建解决方案。
我试过了:
- 为 VS 重新安装/卸载 TypeScript 工具(不会改变任何东西)
- 重新创建
tsconfig.json
文件。 - 切换到没有错误的模式
tsconfig.json
并确保启用了错误发射。 - 禁用/启用 ReSharper
- 卸载各种其他扩展
- 创建一个新的项目和解决方案。该错误发生在所有项目中。
我发现该问题的唯一解决方案是从.csproj
文件中删除以下行:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
在我这样做之后,TypeScript 工具仍然可以正常工作(有一些小问题)并且以开头的错误Build:
消失了。
问题是,在对.ts
文件进行一些操作之后,Visual Studio 会引发以下有用的消息:
并有助于将该行再次添加到.csproj
文件中。起初一切正常,但Build:
在我重新启动 Visual Studio 后错误又回来了。
编辑:更好的解决方法
好的,更好的解决方法是用以下内容替换坏行:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="False And Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
这“欺骗” VS 相信该行已经存在,因此不会再次添加它。但是,仍然存在一些问题,例如仅当您打开包含错误的文件时才会出现错误,而不是在构建时出现。