我在MS Dynamics CRM工作,我有一个包含所有TypeScript的WebResources项目。我有Plugin .net库dll,它包含一些POCO对象,这些对象将通过Rest返回到我的WebResources项目中的javascript。如何设置TypeLite来构建我的Typescript文件?
这是我的假设。
[TsClass]
属性有更简单的方法吗? 我做出了错误的假设吗?
从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,但拥有它并没有什么坏处。
答案 0 :(得分:4)
还有另外一种方法,但我不确定,它是否更好。
将TypeLITE包安装到您的WebResources项目并修改TypeLite.tt文件以包含对plugin.dll的引用
&lt;#@ assembly name =&#34; $(TargetDir)plugin.dll&#34; #&GT;
或者您可以跳过第一步并使用流畅配置TypeScript.Definitions().For<YourClass>()
在输出文件中包含特定类