TypeScript“保存时编译”function在Visual Studio 2015中不起作用
在升级到Visual Studio 2015之后,“编译时保存”function不适用于我。当我在项目中对.ts
文件进行更改并保存时,IDE底部的状态栏显示Output(s) generated successfully
,但生成的.js
文件不会更改。
以下是我所尝试的:
-
将以下内容添加到我的
.csproj
的根<Project>
元素中:<PropertyGroup> <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> </PropertyGroup>
-
在
Tools -> Options -> TypeScript -> Project
选中并取消选中“自动编译不属于项目一部分的TypeScript文件”选项: -
双重检查,以确保在我的项目的TypeScript构build属性中选中“编译时保存”:
我错过了什么?
作为一个方面的说明,TypeScript编译步骤按照预期的那样按常规构build触发。
对我来说这是tsconfig.json
中的这个选项:
"compileOnSave": true, "compilerOptions": { ... },
重新启动Visual Studio以使此更改生效。
今天我偶然发现了这个问题:我通过使用新的"watch":true
解决了这个问题"watch":true
编译器选项,在最近的TypeScript版本中也可以通过JSON获得:
{ "compilerOptions": { "watch": true } }
这样做之后,我不得不解决另一个与输出窗口中出现的以下错误有关的问题:
Object doesn't support property or method 'watchFile'
事实certificate,我的系统正在使用TypeScript (1.0.x)的过时版本,尽pipe我确信我有一个与Visual Studio 2015更新1 (1.7)一起来的新版本。 如果遇到这个问题,可以通过在命令提示符下键入tsc -v
来轻松检查你的tsc版本。
如果它说1.0.x
或任何<1.7,这可能是由于您在PATH环境variables中有一些旧的引用。 通过检查你的Microsoft SDK文件夹来确保你已经安装了1.7或者更高版本,这是Visual Studio在更新时安装TypeScript包所使用的文件夹。
C:\Program Files (x86)\Microsoft SDKs\TypeScript
如果不是,则相应更新。 打开“ CPanel” >“ 系统” >“ 高级” >“ 环境variables” ,select“ 系统variables” ,然后单击“ 编辑” 浏览列表,查找对TypeScript文件夹的任何引用,更改其中的一个,使其指向TypeScript最近安装的版本( 1.7
或更高版本),并删除任何其他文件。 另请参见下面的截图:
有关更多详细信息,请阅读此帖 。
这个问题似乎已经通过TypeScript Language Services
扩展的最新更新得到了解决。
有关如何应用此更新的说明, 请参阅此答案 。
就我而言,我已经在VS 2012上安装了Visual Studio Community 2015. 2012年,我一直在使用Web Essentials进行打字稿,这似乎与2015年有冲突。
在2012年卸载Web Essentials为我解决了这个问题。
使用typescript 2,你必须从你的tsconfig中删除“outDir”。 在Visual Studio中修复我的错误。
在项目属性 – >“TypeScript Build”中,你也可以简单地取消“如果有任何错误被报告,不要发送输出”。 检查它似乎取消了保存,在有错误或不。
"compileOnSave": true,
不适合我。 我终于明白,Visual Studio没有兑现"compileOnSave": true,
如果它是在另一个.json
文件中定义的值,那么你正在扩展。 它必须在根本上才能工作。
解:
对我而言,我确信其他人也是这样,这是由于tsconfig.json中的错误造成的。
你需要添加“compileOnSave”:true。 但是在全局部分里面没有compilerOptions。
Wrong: { "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", "compileOnSave": true }, "exclude": [ "node_modules", "wwwroot" ] } Correct: { "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5" }, "compileOnSave": true, "exclude": [ "node_modules", "wwwroot" ] }
最好的祝福,
安德斯两个Basechat。