使用Visual Studio 2013保存时编译Typescript?

使用Visual Studio 2013保存时编译Typescript?,typescript,visual-studio-2013,Typescript,Visual Studio 2013,我无法在保存时编译以使用VS2013。我安装了VS2013,重新安装了TS 0.9.0.1,在“工具”、“选项”下,键入script/Project/General,我选中了“保存时编译”两个选项。但是当我向我的项目中添加一个新的TS文件,然后编辑并保存它时,更改不会反映在相关的.js文件中 我做错什么了吗?还有其他人有这个问题吗?您是否使用拖放添加了typescript文件? 那么可能是文件的构建操作具有错误的值。使用文件的属性窗口(F4或alt+enter)并验证那里的构建操作…我遇到了以下

我无法在保存时编译以使用VS2013。我安装了VS2013,重新安装了TS 0.9.0.1,在“工具”、“选项”下,键入script/Project/General,我选中了“保存时编译”两个选项。但是当我向我的项目中添加一个新的TS文件,然后编辑并保存它时,更改不会反映在相关的.js文件中


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

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

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


然后我从我的项目中排除了typescript文件,并使用AddExistingFile再次添加了它。之后,typescript文件在保存时编译良好

在上述步骤旁边,如果保存时编译尚未工作,请将您的项目标记为启动项目(在VS 2013解决方案资源管理器上,右键单击,设置为启动项目)


此解决方案由nicholasjgreen在Codeplex上找到,并发布在评论上。

请尝试按照以下说明操作:

我也一直在努力想办法解决这个问题,但我想我已经解决了。我认为部分混淆来自WebEssentials和新的TypeScript插件集成方法的不同

我是TypeScript的早期采用者,并在2012年使用WebEssentials工具在save上编译。我将其配置为生成.js和.min.js文件,这两个文件都自动添加到项目中

升级到VS 2013时,我希望从内置的TypeScript支持中获得相同的功能,但它并不存在(据我所知)

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

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


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

TypeScript 0.9.5保存时编译在我升级到WebEssentials 1.85(2月14日)后,在现有项目上停止工作。我重新安装了两者都没有用,但在看到它为新项目工作后,我尝试在我的csproj中改变这一行,从这个

<Project ToolsVersion="4.0" />


神奇的是,保存时编译再次开始工作。

为我解决了这个问题:

  • 转到“工具”菜单下的“选项”
  • 展开文本编辑器的选项
  • 展开TypeScript的选项
  • 展开项目的选项
  • 选中“自动编译不属于项目的TypeScript文件”

  • 对我来说,即使“保存时编译”(Compile on save)起作用(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>
    

    因此,
    tsc.exe
    也会处理所有依赖文件。

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

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

  • 转到工具>选项
  • 确保选择了“显示所有设置”。这是窗口底部附近的复选框
  • 将“typescript”放在搜索栏中,然后按enter键
  • 现在,应该对列表进行筛选。导航到设置:文本编辑器>类型脚本>项目>常规
  • 现在选择“自动编译不属于项目的TypeScript文件”。按OK

  • 谢谢你的建议。构建操作被设置为TypeScriptCompile,我认为这是正确的。我的一些脚本具有该类型,其他脚本具有CodeAnalysisDictionary-这两种构建类型都适用于我。原来这是一个新手犯的错误。我没有按照这里定义的说明让TS在保存时编译来处理我的项目:我认为这是一个bug。VS2013没有为我编译typescript文件。我仍然在2012年编辑和保存我的文件。是的,看起来它需要以这种方式添加一个文件,以便它知道如何使用必要的引用更新项目文件。我相信这会使它在将构建操作设置为TypeScriptCompile时起作用,正如它在为我添加新的TypeScript文件时所做的那样,排除和包含是不够的。我所做的是从project中删除了.ts文件,并使用“复制和粘贴”从头开始重新创建它们。请检查文件的属性。即使在重新添加时,该文件也没有正确地将构建操作设置为“TypeScriptCompile”……至少在我的文件不再编译的情况下是这样。先生,您真是太好了!按照链接中的说明编辑csproj文件对我很有用。更具体地说,添加
    PropertyGroup
    Import
    目标部分(否则我会遇到intellisense问题,即使使用typescript 1,也不会编译任何内容)。
    <Target Name="AfterBuild">
      <Exec Command="tsc.exe --sourcemap _core.ts" WorkingDirectory="$(MSBuildProjectDirectory)\js" />
    </Target>
    
    /// <reference path="_dependent.ts" />
    ...