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。