33

我无法让 Compile-on-Save 与 VS2013 一起使用。我安装了 VS2013,重新安装了 TS 0.9.0.1,在“工具”、“选项”、Typescript/Project/General 下,我检查了两个“保存时编译”选项。但是当我将一个新的 TS 文件添加到我的项目中,然后对其进行编辑并保存时,所做的更改不会反映在关联的 .js 文件中。

难道我做错了什么?其他人有这个问题吗?

4

9 回答 9

53

为我解决了这个问题:

  1. 转到“工具”菜单下的“选项”。
  2. 扩展文本编辑器的选项
  3. 扩展 TypeScript 的选项
  4. 扩展项目的选项
  5. 勾选“自动编译不属于项目的 TypeScript 文件”</li>
于 2014-02-18T15:31:28.283 回答
16

我有以下情况:该项目是使用 vs2012 和早期版本的 typescript 创建的。我升级到 VS2013 和最新版本的 typescript (0.9.1.1) 并且脚本在保存时没有编译。

然后我从我的项目中排除了打字稿文件,并使用添加现有文件再次添加它。之后,打字稿文件在保存时编译得很好!

于 2013-11-09T00:00:17.327 回答
7

在我升级到 Web Essentials 1.85(2 月 14 日)后,TypeScript 0.9.5 compile on save 停止为我在现有项目上工作。我重新安装了两者都无济于事,但在看到它适用于新项目后,我尝试在我的 csproj 中更改这一行,从这里;

<Project ToolsVersion="4.0" />

<Project ToolsVersion="12.0"/>

神奇的是,保存时编译又开始工作了。

于 2014-02-10T14:32:10.123 回答
4

尝试按照以下说明操作:

保存时编译

我也一直在努力解决这个问题,但我想我已经解决了。我认为部分困惑来自 WebEssentials 和新的 TypeScript 插件集成之间的方法差异。

我是 TypeScript 的早期采用者,并在 2012 年使用 WebEssentials 工具在保存时进行编译。我将其配置为生成 .js 和 .min.js 文件,它们都自动添加到项目中。

升级到 VS 2013 时,我一直在寻找内置 TypeScript 支持的相同功能,但它不存在(据我所知)。

相反,我相信 2013 年的集成工具涵盖了开发和生产工作流程。

上述说明为您设置了在发布期间应该发生的构建时编译。在开发过程中,“保存时编译”功能会在磁盘上生成文件,但不会将它们添加到项目中。

然后我意识到生成的文件实际上不需要像以前那样成为项目的一部分,以及为什么它比 WebEssentials 解决方案更好(不包括缺少预览窗口!)。

于 2013-12-11T22:28:36.643 回答
2

对我来说,即使保存时编译工作(Visual Studio 2013),如果其他人尝试运行 Web 项目,它也不会自动生成 javascript 文件。在我的项目中,我包含了*.js文件和*.js.map文件,以防止 IIS 在我修改*.ts文件时不采用新版本。但这些文件不包含在源代码管理中。

因此,我所做的是在csproj项目文件的末尾包含以下行:

<Target Name="AfterBuild">
  <Exec Command="tsc.exe --sourcemap _core.ts" WorkingDirectory="$(MSBuildProjectDirectory)\js" />
</Target>

_core.ts文件夹中的文件在哪里js- 我敢肯定 - 通过开头的标题直接或间接引用所有文件。

/// <reference path="_dependent.ts" />
...

这样也可以tsc.exe处理所有相关文件。

于 2014-10-08T20:27:41.133 回答
1

除了上述步骤之外,如果保存时编译还没有工作,请将您的项目标记为启动项目(在 VS 2013 解决方案资源管理器中,右键单击,设置为启动项目)。

该解决方案由 nicholasjgreen 在 Codeplex 上找到,并发布在http://typescript.codeplex.com/wikipage?title=Compile-on-Save的评论中。

于 2013-11-24T10:15:57.837 回答
1

我通过将函数添加到 Typescript 文件的末尾来解决了这个问题。当在页面顶部(在其他功能之前)键入“新”功能时它不起作用,但是当我将它添加到最后一个功能下方时它起作用了。只用了三个小时!

于 2015-10-16T18:01:49.987 回答
0

您是否使用拖放添加了打字稿文件?然后可能是文件的构建操作具有错误的值。使用文件的属性窗口(F4 或 alt + enter)并验证那里的构建操作...

于 2013-07-18T10:55:35.530 回答
0

使用以下方法更容易找到此功能。(VS2015)

  1. 转到工具 > 选项
  2. 确保您选择了“显示所有设置”。这是窗口底部附近的一个复选框。
  3. 将“ typescript ”放在搜索栏中,然后按回车。
  4. 现在应该过滤列表。导航到设置:文本编辑器 > 打字稿 > 项目 > 常规
  5. 现在选择“<strong>自动编译不属于项目的 TypeScript 文件”。按确定。
于 2015-11-11T22:28:10.177 回答