gpt4 book ai didi

typelite - 如何设置 TypeLite 以在其他项目中构建类型

转载 作者:行者123 更新时间:2023-12-04 02:17:55 26 4
gpt4 key购买 nike

我在 MS Dynamics CRM 中工作,我有一个包含我所有 TypeScript 的 WebResources 项目。我有插件 .net 库 dll,其中包含一些 POCO 对象,这些对象将通过 Rest 返回到我的 WebResources 项目中的 javascript。如何设置 TypeLite 来构建我的 Typescript 文件?

这是我的假设。

  1. 在我的插件项目中安装 Typescript NuGet 包
  2. 使用 [TsClass] 属性修饰我需要 Typescript 文件的 POCO 类
  3. 在构建时,它会在插件项目中创建的 Scripts 文件夹中生成 Typescript 文件
  4. 我创建了一个将 Typescript 文件复制到我的 WebResources 项目的构建后事件

有没有更简单的方法?我是否做出了错误的假设?

更新

根据 Lukas 的回答,我已将我的 TypeLite.Net4.tt 文件更新为如下所示:

<#@ template debug="false" hostspecific="True" language="C#" #>
<#@ assembly name="$(TargetDir)TypeLite.dll" #>
<#@ assembly name="$(TargetDir)TypeLite.Net4.dll" #>
<#@ assembly name="$(TargetDir)Xrm.Plugins.dll" #>
<#@ assembly name="$(TargetDir)$(TargetFileName)" #>

<#@ import namespace="TypeLite" #>
<#@ import namespace="TypeLite.Net4" #>
<#@output extension=".d.ts"#>
<#@include file="Manager.ttinclude"#>
<# var manager = Manager.Create(Host, GenerationEnvironment); #>

<# var ts = TypeScript.Definitions()
.WithReference("Enums.ts")
.For<Xrm.Plugins.Rest.Poco.AccountLookupResponse>();
#>

<#= ts.Generate(TsGeneratorOutput.Properties) #>

<# manager.StartNewFile("Enums.ts"); #>
<#= ts.Generate(TsGeneratorOutput.Enums) #>
<# manager.EndBlock(); #>
<# manager.Process(true); #>

这会在 TypeLite.Net4.d.ts 文件中生成正确的定义。我目前没有在类里面使用任何枚举,因此目前不需要 Enums.ts,但拥有它也无妨。

最佳答案

还有另一种方法,但我不确定是否更好。

  1. 将 TypeLITE.Lib 包安装到您的插件项目(您需要在那里引用 TypeLITE 库,因为您想要使用 [TsClass] 属性)
  2. 将 TypeLITE 包安装到您的 WebResources 项目并修改 TypeLite.tt 文件以包含对您的 plugin.dll 的引用

    <#@程序集名称="$(TargetDir)plugin.dll"#>

或者您可以跳过第一步并使用流畅的配置 TypeScript.Definitions().For<YourClass>()在输出文件中包含特定类

关于typelite - 如何设置 TypeLite 以在其他项目中构建类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com