【问题标题】:Visual Studio 2013 Typescript compiler isn't respecting '_references.ts' fileVisual Studio 2013 Typescript 编译器不尊重“_references.ts”文件
【发布时间】: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


    【解决方案1】:

    编辑: 更新:原来_references.ts 需要位于项目的根目录中才能被编译器识别。所以这是首选方式:-) 这种方法也有效......但请不要这样做:


    原始解决方法:

    阅读我生成的RRStore.js 文件时,我注意到该顺序似乎是一个明显随机的顺序:RR.YoutubeLoaderProductViewModelDefenderViewModelStoreViewModel 等。

    我意识到可能只有一种解释......

    我打开了.csproj 文件,果然编译器正在按照文件最初添加到我的项目中的顺序处理文件!!!。

    所以我将_references.ts 文件移动到MySite.csproj 文件中的第一个文件 - 现在它可以正确识别它并以正确的顺序编译所有内容。

    我不确定这是否是一个已知的错误,但这对我来说是一个足够的解决方案。

    MyProject.csproj

    【讨论】:

    • 我已经直接通过 Visual Studio 报告了这一点。如果有人知道现有的错误报告(或者为什么这不是我会感到惊讶的错误的原因),请在此处发布指向它的链接
    • 我们刚刚遇到了同样的问题,而且,您的 cmets 在同一天。初步测试表明这可以解决问题...我会说这是一个错误,我不知道有错误报告。
    • 更新:_references.ts 显然需要位于项目的根目录中才能被编译器按设计识别
    • 哇,我已经忍受了好几个小时了……谢谢。想知道为什么互联网上没有关于它的内容。
    • vs2015.1还是这样,_references.ts需要在项目的根目录下。
    【解决方案2】:

    我在 typescript 错误跟踪器中找不到对此的任何引用,所以我在 https://typescript.codeplex.com/workitem/2592 创建了一个

    【讨论】:

    • 谢谢。在绝对最新的 VS2013 中也是如此——直到最近的里程碑版本我才开始使用 TS
    【解决方案3】:

    太好了……

    显然_references.ts 需要在项目的根目录中。

    我没有对此进行测试,但这是来自https://typescript.codeplex.com/workitem/2592的回复

    我还是更喜欢手动编辑csproj文件的方式(所以我的ts文件都是inside Scripts/Typescript)。希望有一天他们会改变这种不直观的行为,并在任何地方寻找 _references.ts。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多