在 TFS 环境中开始使用 TypeScript 时,我遇到了同样的问题。尽管您的问题是寻求一种在保存时自动生成定义文件的方法,但您真正的问题与 TFS 有关。
解决您的实际问题:
默认情况下,TFS 与服务器工作区一起使用,这意味着对本地文件的任何编辑都需要在服务器上执行签出。因此,所有本地文件都被锁定,需要显式签出。如果您打开文件并对其进行编辑,Visual Studio 会自动为您执行此操作,但不会对未直接编辑的引用文件执行此操作。
解决方案是将 TFS 配置为与本地工作区一起使用,您可以为您提供其他好处,例如不包括在“待定更改”中的 .js 文件,该文件是在其内容没有任何更改的情况下重新创建的。
我建议阅读这篇简单的文章,它非常清楚地比较本地与服务器工作空间:http:
//blogs.msdn.com/b/willy-peter_schaub/archive/2011/11/30/team-foundation-server-trying-to -了解服务器与本地工作空间.aspx
当您设置本地工作区时,您只会影响您的机器,因此不需要更改 TFS 服务器。
要在您的机器中设置本地工作区:
- Visual Studio/文件/源控件/高级/工作区
- 选择一个工作区,点击编辑;
- 在新屏幕中单击
- “高级”将位置更改为“本地”</li>
在这些更改之后,您的所有本地文件都将可写,当您再次连接到服务器时,您将能够离线工作而无需使用该解决方案“上线”,因为 TFS 将检测到您的所有本地更改(甚至在 VS 之外) . 您还将在 Windows 资源管理器的上下文菜单中添加 TFS 条目,这会很有帮助。
解决您并不真正需要解决的问题 - 自动生成定义文件:
您不需要解决这个问题,但要与问题保持一致,也许这对将来遇到这个问题的其他人会有所帮助。
要在保存特定文件时强制执行某个操作,您可以将自定义工具关联到您的文件(Visual Studio/Solution Explorer/Properties (F4)/Custom Tool),然后创建执行 TypeScript 编译器以生成的构建目标定义。
像这样的东西(伪代码,未经测试):
<Target Name="GenerateTypeScriptDeclarationFile">
<Exec Command="tsc --definition @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
有关如何将自定义工具与 TypeScript 和 MSBuild 一起使用的更多详细信息,请参阅我对此问题的回答。