使用Web Essentials 2013生成typescript intellisense文件无效

使用Web Essentials 2013生成typescript intellisense文件无效,web,visual-studio-2013,typescript,web-essentials,Web,Visual Studio 2013,Typescript,Web Essentials,我已将visual studio 2013与web essentials 2013一起安装。我右键单击一个.cs文件并选择“Web Essentials->创建Typescript intellisense文件”,这样我就得到了一个Typescript d.ts文件,我可以在Typescript代码中引用它。我在这方面遇到了一些问题。假设我的课程如下: namespace SomeNamespace { [TypescriptModule("test")] [DataContr

我已将visual studio 2013与web essentials 2013一起安装。我右键单击一个.cs文件并选择“Web Essentials->创建Typescript intellisense文件”,这样我就得到了一个Typescript d.ts文件,我可以在Typescript代码中引用它。我在这方面遇到了一些问题。假设我的课程如下:

namespace SomeNamespace
{
    [TypescriptModule("test")]

    [DataContract(Name = "MyDTO")]
    public partial class MyPM
    {
        [DataMember(Name = "id")]
        public long Id { get; set; }

        [Required]
        [DataMember(Name = "name")]
        public CustomPM Data{ get; set; }
    }
}
我得到的d.ts文件是:

declare module test {
    interface MyPM{
        id: number;
        data: test.CustomPM;
    }
}
第一个问题是线路:

[DataContract(Name = "MyDTO")]
在生成过程中被忽略。它不是生成一个名为MyDTO的类,而是一个名为MyPM的类,尽管MyDTO是指定在序列化过程中使用的字符串,这是通过连接到客户端的内容。我在这里做了一些调查和代码:

指示它使用CodeClass.Name属性来确定类名。是否有方法使用类的属性(DataContract名称以外的内容)使CodeClass.Name属性包含实际类名之外的另一个字符串

第二个问题是这一行:

data: test.CustomPM;
在安装了typescript的visual studio 2013中,test.CustomPM会给我一个错误,因为它无法在测试模块中找到CustomPM类型,即使该类已生成到同一个“测试”模块中并可供使用。缺少的部分是d.ts文件顶部的这一行:

/// <reference path="./CustomPM.cs.d.ts"/>
//
然而,我一直无法找到一种方法让生成器也生成这个


我真的很感激任何人都能提供一些解决这些问题的方法。谢谢

这是一个老问题,我不会直接回答,因为我不知道WebEssentials的这种功能

但我会给你一个非常有效的替代方案:

TypeLite-

您只需将attribute
[TsClass]
放在所需的类上

如果您想让TS接口以
I
和camelCase的所有属性开头,请编辑TypeLite.Net4.tt:


您可以在基本
tsconfig.json
中引用生成的类型,这样就不需要在每个typescript文件中都使用自定义引用:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "jsx": "preserve"
  },
  "files": [
    "../typings/index.d.ts",
    "./TestForm.tsx",
    "./declaration.d.ts",
    "../models/models.cs.d.ts"
  ]
}
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "jsx": "preserve"
  },
  "files": [
    "../typings/index.d.ts",
    "./TestForm.tsx",
    "./declaration.d.ts",
    "../models/models.cs.d.ts"
  ]
}