我有同样的问题时,开始在TFS环境打字稿工作。 尽管你的问题是要求一种在保存时自动生成定义文件的方法,但你真正的问题与TFS有关。
解决您的实际问题:
TFS默认工作与服务器的工作空间,这意味着任何编辑本地文件要求退房要在服务器上执行。出于这个原因,所有本地文件都被锁定,需要显式检出。如果您打开文件并对其进行编辑,Visual Studio会自动为您执行此操作,但对于未直接编辑的参考文件,Visual Studio不会这样做。
解决方案是配置TFS与本地工作区一起工作,您可以为您提供其他好处,例如不包含在“待定更改”中的重新创建的.js文件,其内容没有任何更改。
我建议阅读这个简单的一篇文章,非常清晰,比较本地VS服务器工作区: http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/11/30/team-foundation-server-trying-to-understand-server-versus-local-workspaces.aspx
当你设置你只会影响您的计算机的本地工作区,因此需要在TFS服务器没有变化。
要建立本地工作区在你的机器:
- 的Visual Studio /文件/源控制/高级/工作区
- 选择一个工作区,点击编辑;
- 在新的屏幕上单击
- “高级”将位置更改为“本地”
这些更改所有本地文件将可写后,您就可以脱机工作没有当再次连接到服务器时需要使用解决方案“上线”,因为所有本地更改(即使在VS之外)都将被TFS检测到。 您还将在Windows资源管理器的上下文菜单中添加TFS条目,这可能会有所帮助。
解决,你并不真正需要解决的问题 - 自动生成定义文件:
你并不需要解决这个问题,但为了保持连贯与问题,也许这可以帮助对于未来出现这个问题的其他人。
要在保存特定文件时强制执行某个操作,可以将自定义工具与您的文件(Visual Studio/Solution Explorer/Properties(F4)/ Custom Tool)相关联,然后创建一个执行的构建目标TypeScript编译器生成定义。
是这样的(伪代码,未测试):
<Target Name="GenerateTypeScriptDeclarationFile">
<Exec Command="tsc --definition @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
见我的回答this question关于如何使用定制工具以打字稿和MSBuild的更多细节。
要检出class2.ts,也意味着递归地,我可能会以检出所有文件结束。这是我想避免的。 – Jer
如果您没有检出,那么由于缺少生成的js,应用程序不会工作吗? – basarat