【问题标题】:Compiling transformation: The type or namespace name could not be found when running TypeLite.tt编译转换:运行 TypeLite.tt 时找不到类型或命名空间名称
【发布时间】:2013-04-11 14:43:20
【问题描述】:

免责声明:我对我在这里使用的每一项技术都是新手,所以如果我遗漏了明显的内容,请原谅我......

我开始将 MVC 4 与 Entity Framework 5 和 Web API 混为一谈,我想使用带有 Knockout 的 TypeScript 来做一些 UI 工作。我找到了 TypeLite 项目,它将采用我的 EF 模型并为我生成 TypeScript 接口,以便所有内容都是“强”类型的。

我的解决方案包括 3 个项目:

  • MyApp.dll = 包含所有 MVC 工作
  • MyApp.Domain.dll = 包含 EF 域模型
  • MyApp.WebAPI.dll = 包含 WebAPI 工作

我将 TypeLite 引用添加到 MyApp 项目(通过 NuGet),并将 TypeLite.tt 修改为:

<#@ template debug="false" hostspecific="True" language="C#" #>
<#@ assembly name="$(SolutionDir)packages\TypeLite.0.8.2\lib\net40\TypeLite.dll" #>
<#@ assembly name="$(TargetDir)$(TargetFileName)" #>
<#@ import namespace="TypeLite" #> 
<#@output extension=".d.ts"#>
<#= TypeScript.Definitions()
.For<MyApp.Domain.Models.Country>()
.For<MyApp.Domain.Models.State>()
.For<MyApp.Domain.Models.Address>()
.For<MyApp.Domain.Models.Contact>() #>

当我在 TypeLite.tt 上“运行自定义工具”时出现错误:

编译转换:找不到类型或命名空间名称“MyApp”(您是否缺少 using 指令或程序集引用?)

我已尝试添加以下行:

<#@ import namespace="MyApp" #>
<#@ import namespace="MyApp.Domain" #>
<#@ import namespace="MyApp.Domain.Models" #>

它仍然给我同样的错误。我确定我遗漏了一些微不足道的东西,并且我仍在通过 Google 博士为我找到的数千篇文章进行挑选,以参考搜索,但我希望这里的人可以帮助我找到光明。

感谢您的帮助...

【问题讨论】:

    标签: javascript asp.net-mvc entity-framework typescript


    【解决方案1】:

    驱动 TypeScript 接口生成的 T4 模板引擎作为一个单独的进程运行,因此即使 MyApp.WebAPI 项目引用 MyApp.Domain.dll,T4 也不知道它。

    您应该将指向 MyApp.Domain.dll 的程序集指令添加到 TypeLite.tt。它是常规 C# 项目中“添加引用”命令的 T4 模拟。

    <#@ assembly name="$(SolutionDir)path\to\MyApp.Domain.dll" #>
    

    $(SolutionDir) 是一个变量,其中包含您的解决方案目录的路径。

    【讨论】:

    • 谢谢卢卡斯!解决我的问题的修改代码:
    • 将此添加到 T4 对我有用
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 2017-07-12
    • 2011-05-13
    • 2012-11-01
    • 2013-03-25
    • 2012-06-19
    • 2017-11-29
    相关资源
    最近更新 更多