2013-04-18 15 views
6

Yasal Uyarı: Burada kullandığım teknolojinin hemen her yerine yeni geliyorum, bu yüzden beni affet, eğer bariz olanı özlüyorum ...Dönüşümü derleme: TypeLite.tt komutunu çalıştırırken tür veya ad alanı adı bulunamadı

MVC 4 ile Entity Framework 5 ve Web API ile karmaşaya başlıyorum ve bazı UI öğeleri yapmak için Knockout ile TypeScript kullanmak istiyorum. EF modelimi alıp benim için TypeScript arayüzleri yaratacak olan TypeLite projesini buldum, böylece her şey "yazıyor".

Çözümümün 3 projeden oluşmaktadır:

  • MyApp.dll = MVC tüm işe İçeren
  • MyApp.Domain.dll = EF etki modeli içerir
  • MyApp.WebAPI.dll =

    : I (Nuget ile) BenimUygulamam projeye TypeLite referans ilave edildi ve okuma TypeLite.tt modifiye

WebAPI çalışma içerir

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

ben "Run Custom Aracı" TypeLite.tt ben hatayı olsun:

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

Hala veren tutar:

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

çizgiyi (ler) ekleyerek denedim bana yine aynı hata. Eminim ki, önemsiz bir şey eksikliğim var, ve hala Dr. Google'ın benim için arama yaptığını belirttiği binlerce makaleyi seçiyorum ama buradaki birinin ışığı bulmama yardımcı olabileceğini umuyorum. Herhangi bir yardım için

Teşekkür ...

cevap

13

T4 çiftleşmiş motoru, typescript nesil arayüzler sürücüleri ayrı bir süreç olarak çalışır, bu nedenle bile MyApp.WebAPI proje başvuruları MyApp.Domain.dll olsa T4 bilmiyor hakkında.

MyApp.Domain.dll dosyasını TypeLite.tt dosyasına yönlendiren derleme yönergesi eklemelisiniz. Düzenli C# projeleri 'başvurusu Ekle" komutunun T4 analog bu.

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

$(SolutionDir)

çözüm dizin yolunu içermektedir değişken vardır.

+2

Lukas teşekkür ederiz! Çözmek için modifiye kod benim Sorun: <# @ assembly name = "$ (SolutionDir) MyApp.Domain \ bin \ $ (ConfigurationName) \ MyApp.Domain.dll" #> – ThinkingCap

+0

Bunu T4'e eklemek benim için çalıştı <# @ assembly name = "$ (TargetPath) "#> –

İlgili konular