2013-04-18 36 views
6

Tuyên bố từ chối trách nhiệm: Tôi mới chỉ về mọi công nghệ tôi đang sử dụng ở đây, vì vậy hãy tha thứ cho tôi nếu tôi thiếu thông tin hiển thị ..Biên dịch chuyển đổi: Không thể tìm thấy loại tên hoặc không gian tên khi chạy TypeLite.tt

Tôi bắt đầu gây rối với MVC 4 với Entity Framework 5 và Web API, và tôi muốn sử dụng TypeScript với Knockout để thực hiện một số công cụ giao diện người dùng. Tôi tìm thấy dự án TypeLite sẽ lấy mẫu EF của tôi và tạo ra các giao diện TypeScript cho tôi để mọi thứ được gõ "mạnh".

giải pháp của tôi bao gồm 3 dự án:

  • MyApp.dll = Chứa tất cả các MVC làm việc
  • MyApp.Domain.dll = Chứa các mô hình miền EF
  • MyApp.WebAPI.dll = chứa các công việc WebAPI

tôi đã thêm các tài liệu tham khảo TypeLite cho dự án MyApp (thông qua NuGet), và sửa đổi các TypeLite.tt đọc:

<#@ 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>() #> 

Khi tôi "Run Tuỳ chỉnh Tool" trên TypeLite.tt tôi nhận được lỗi:

Compiling transformation: The type or namespace name 'MyApp' could not be found (are you missing a using directive or an assembly reference?)

Tôi đã thử thêm dòng (s):

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

Nó vẫn giữ cho tôi cùng một lỗi mặc dù. Tôi chắc chắn rằng tôi đang thiếu thứ gì đó tầm thường, và tôi vẫn đang chọn hàng ngàn bài báo mà Tiến sĩ Google tìm cho tôi để tìm kiếm điều này, nhưng tôi hy vọng rằng ai đó ở đây có thể giúp tôi tìm ra ánh sáng.

Nhờ sự giúp đỡ ...

Trả lời

13

T4 templating engine, mà các ổ đĩa nguyên cảo giao diện thế hệ, chạy như một quá trình riêng biệt, vì vậy mặc dù tài liệu tham khảo dự án MyApp.WebAPI MyApp.Domain.dll, T4 không biết về nó.

Bạn nên thêm chỉ thị lắp ráp trỏ tới MyApp.Domain.dll vào TypeLite.tt. Đó là T4 tương tự của 'Thêm tài liệu tham khảo" lệnh từ các dự án thường xuyên # C.

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

$(SolutionDir) là một biến, có chứa đường dẫn đến thư mục giải pháp của bạn.

+2

Cảm ơn bạn Lukas! Mã sửa đổi để giải quyết của tôi vấn đề: <# @ tên lắp ráp = "$ (SolutionDir) MyApp.Domain \ bin \ $ (ConfigurationName) \ MyApp.Domain.dll" #> – ThinkingCap

+0

Thêm vào T4 làm việc cho tôi <# @ assembly name = "$ (TargetPath) "#> –

Các vấn đề liên quan