2013-04-18 9 views
6

免責事項:私はここで使用しているテクノロジのすべてに慣れているので、明白です。変換のコンパイル:TypeLite.ttを実行しているときに、タイプまたは名前空間の名前が見つかりませんでした。

MVC 4でEntity Framework 5とWeb APIを使いこなし始めていますが、KnockoutでTypeScriptを使用してUIを使用したいと考えています。 TypeLiteプロジェクトが見つかりました。私のEFモデルをとり、すべてのタイプが「強く」なるようにTypeScriptインターフェイスを生成します。

私のソリューションは、3つのプロジェクトで構成されています

  • MyApp.dll = MVCの仕事のすべてが含まれています
  • MyApp.Domain.dll =はEFドメインモデルが含まれています
  • MyApp.WebAPI.dll =

    :私は(NuGet経由)MyAppプロジェクトにTypeLite参照を追加し、読み取ることTypeLite.tt修飾

WebAPIの作業が含まれています

<#@ 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上:

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

私は行(複数可)を追加しようとしている:

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

それはまだ与え続けます私も同じエラー。私は何か些細なものを見逃していると確信しています。私はまだGoogleがこの検索を参照していることがわかっている何千もの記事を選んでいますが、ここにいる誰かが私に光を見いだすのを助けてくれることを願っています。

任意の助けてくれてありがとう...活字体は、世代をインターフェースドライブ

答えて

13

T4テンプレートエンジンは、別のプロセスとして実行され、そのMyApp.WebAPIプロジェクトはMyApp.Domain.dllを参照するにもかかわらず、T4は知りません。それについて。

MyApp.Domain.dllを指すアセンブリディレクティブをTypeLite.ttに追加する必要があります。これは、通常のC#プロジェクトから「参照を追加」コマンドのT4アナログです。

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

$(SolutionDir)はあなたのソリューションディレクトリへのパスを含む変数、である。

+2

ルーカスありがとう! 私を解決するために変更されたコード問題: <#@アセンブリ名= "$(SolutionDir)MyApp.Domain \ bin \ $(ConfigurationName)\ MyApp.Domain.dll"#> – ThinkingCap

+0

これをT4に追加すると、私のために働いた<#@ assembly name = "$ (TargetPath) "#> –

関連する問題