TypeScript“保存时编译”功能在Visual Studio 2015中不起作用

时间:2015-07-31 16:30:40

标签: javascript visual-studio compilation typescript visual-studio-2015

升级到Visual Studio 2015后,“编译保存”功能对我不起作用。当我对项目中的.ts文件进行更改并保存时,状态栏位于IDE说Output(s) generated successfully,但生成的.js文件不会更改。

这是我尝试过的:

  • 将以下内容添加到<Project>中的根.csproj元素中:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • Tools -> Options -> TypeScript -> Project中选中并取消选中“自动编译不属于项目的TypeScript文件”选项:

    enter image description here

  • 仔细检查以确保在我的项目的TypeScript Build属性中选中“Compile on save”:

    enter image description here

我错过了什么?

作为旁注,TypeScript编译步骤在由常规构建触发时按预期工作。

13 个答案:

答案 0 :(得分:130)

对我来说,tsconfig.json中有这个选项:

"compileOnSave": true,
"compilerOptions": { ... },

重新启动Visual Studio以使此更改生效。

答案 1 :(得分:31)

我今天偶然发现了这个问题:我通过使用新的{ "compilerOptions": { "watch": true } } 编译器选项修复了这个问题,该选项也可以在最近的TypeScript版本中通过JSON获得:

Object doesn't support property or method 'watchFile'

执行此操作后,我必须解决与输出窗口中出现的以下错误相关的另一个问题:

tsc -v

事实证明我的系统使用的是过时版本的 TypeScript (1.0.x),尽管我确信我有一个更新的 Visual Studio 2015 Update 1 (1.7)。如果遇到此问题,可以通过在命令提示符下键入1.0.x来轻松检查tsc版本。

如果它显示C:\Program Files (x86)\Microsoft SDKs\TypeScript 或任何&lt; 1.7,这可能是因为你的PATH环境变量中有一些旧的引用。通过检查Microsoft SDKs文件夹内部确保安装了1.7或更高版本,该文件夹是Visual Studio在更新时安装TypeScript软件包时使用的文件夹:

1.7

如果没有,请相应更新。打开 CPanel &gt; 系统&gt; 高级&gt; 环境变量,选择系统变量,然后点击修改;浏览列表以查找对TypeScript文件夹的任何引用,更改其中一个以使其指向TypeScript最新安装的版本(class Section < ActiveRecord::Base belongs_to :teacher, :class_name => "Section", :foreign_key => "teacher_section_id" has_many :students, :class_name => "Section", :foreign_key => "teacher_section_id" end 或更高版本)并删除任何其他欺骗。另见下面的截图:

enter image description here

有关其他详细信息,请阅读我博客上的this post

答案 2 :(得分:5)

此问题似乎已通过TypeScript Language Services扩展程序的最新更新得到解决。

See this answer有关如何应用此更新的说明。

答案 3 :(得分:5)

解决方案:

对我来说,我很确定其他人也是如此,这是由于tsconfig.json中的错误。

您需要添加&#34; compileOnSave&#34;: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"
  ]
}

致以最诚挚的问候,

Anders Both Basechat。

答案 4 :(得分:2)

在我的情况下,我在VS 2012一侧安装了Visual Studio Community 2015.我在2012年使用Web Essentials打字稿,这似乎与2015年有冲突。

2012年卸载Web Essentials为我解决了这个问题。

答案 5 :(得分:2)

使用typescript 2,您必须从tsconfig中删除“outDir”:修复Visual Studio中的错误。

答案 6 :(得分:1)

在项目属性中 - &gt; &#34; TypeScript Build&#34;,您也可以简单地取消选中&#34;如果报告任何错误,请不要发出输出。&#34;对它进行检查似乎会在保存时停用转换,不管是否存在错误。

答案 7 :(得分:1)

"compileOnSave": true,对我不起作用。我终于发现,如果Visual Studio在您正在扩展的另一个"compileOnSave": true,文件中定义,则它不会尊重.json值。它必须在根目录才能发挥作用。

答案 8 :(得分:1)

找到hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) h,s,v = cv2.split(hsv_image) fig = plt.figure(figsize=(8,7)) ax = plt.axes(projection='3d'), plt.title("Histogram 3D") plt.hist(h.ravel(), 256, [0, 256]) plt.hist(s.ravel(), 256, [0, 256]) plt.hist(v.ravel(), 256, [0, 256]) 中的文件,即C:\ file.ts,然后输入

terminal/cmd

答案 9 :(得分:1)

不确定这是否对任何人都有帮助。

尽管我在编译时遇到问题,但是在保存时正在编译。我只是没有将我的解决方案资源管理器工具栏切换为显示所有文件。

文件在那里,只是不耐烦地等待添加到项目中。

enter image description here

答案 10 :(得分:0)

在这里也有同样的问题。 我正在使用Visual Studio 2015更新3和TypeScript 2.9.2.0。在工具/选项/项目和解决方案/外部Web工具中,我将$(PATH)升级到第二个位置。 使用所有这些配置,compileOnSave:true对我不起作用。解决方法是打开命令行,在侧面运行ng build --watch并让节点负责自动编译

答案 11 :(得分:0)

检查是否安装了在项目中配置的TypeScript版本。不知何故,我没有收到没有安装TypeScript 3.7的警告,但是保存时编译功能以静默方式停止工作。

一旦我安装了TypeScript 3.7,它就可以再次工作。

答案 12 :(得分:0)

我在Visual Studio 2019中遇到了类似但不相同的问题

  • 我的项目设置为使用TypeScript 2.9
  • 我安装了TypeScript 3.8,并且代码可以编译,但是无法在保存时编译

我安装了较旧版本的TypeScript 2.9,重新启动了VS,然后它开始流行