【发布时间】:2014-07-17 02:45:54
【问题描述】:
我是 Typescript 的新手,最近几天一直在 Visual Studio 2013 Update 2(本机包含所有支持)中工作。
我在 Visual Studio 中为我的项目的属性页选择了以下选项。
这意味着当我保存文件时,它会自动将所有打字稿文件编译在一起并创建一个 RRStore.js 文件。然后我在 ASP.NET 中使用 BundleManager 将其包含在内,就好像它是任何旧的 JS 文件一样。我没有使用模块加载器,因为没有太多 JS 代码。
为了以正确的顺序解决依赖关系,TS 编译器需要一个_references.ts 文件,所以我创建了一个这样的文件:
/// <reference path="RR.ErrorHandling.ts" />
/// <reference path="RR.JQueryPlugins.ts" />
/// <reference path="RR.Util.ts" />
/// <reference path="viewmodel/UserViewModel.ts" />
/// <reference path="viewmodel/AddressViewModel.ts" />
/// <reference path="viewmodel/ProductViewModel.ts" />
/// <reference path="viewmodel/CartItemViewModel.ts" />
/// <reference path="viewmodel/CheckoutViewModel.ts" />
/// <reference path="viewmodel/StoreWizardViewModel.ts" />
/// <reference path="viewmodel/DefenderWizardViewModel.ts" />
/// <reference path="viewmodel/MainViewModel.ts" />
/// <reference path="RR.YoutubeLoader.ts" />
这个文件意味着当我在编辑 TS 文件后在 Visual Studio 中点击 Ctrl+S 时,它将按此顺序将我所有的其他 TS 文件组合在一起,因此原型链之类的东西对于继承是正确的。
保存 TS 文件时,这在 Ctrl+S 上运行良好。
然后我不得不对一些 C# 代码进行更改 - 之后我当然需要点击 Ctrl+F5 来构建项目。令我惊讶的是,我在浏览器中遇到了奇怪的 JS 错误——关于对象上不存在的原型。
我在浏览器中查看了生成的 Typescript 文件 RRStore.js 并检查了我所有文件的顺序,并将文件 RR.YoutubeLoader.ts 放在首位。
这很奇怪! (尤其是因为它在我上面的参考列表中是最后一个。)
我去了那个文件并点击了Ctrl+S,刷新了RRStore.js,一切都恢复了正确的顺序。
换句话说,当我进行完整构建时,_references.ts 中的文件顺序不受尊重,但当我刚刚点击 Ctrl+S 时,它是。怎么回事?
【问题讨论】:
标签: visual-studio-2013 typescript