私のソリューションには長い間.ttファイルがいくつかあります。最近、csprojに追加して、ビルド時にトランスフォーメーションを起動することにしました。
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>
同じソリューションの別のプロジェクトからの2番目の.ttファイル(Second.tt)を含む最初の.ttファイル(First.tt)があります。
<#@ include file="..\SecondProject\Second.tt" #>
Second.ttには、T4Toolbox.ttを含めます。
<#@ include file="T4Toolbox.tt" #>
右クリック->カスタムツールの実行を使用してFirst.ttを起動すると、すべて問題ありません。しかし、ソリューションを再構築すると、次のエラーが発生 します:ファイルのインクルードテキストを解決できませんでした:E:\ Dev \ MySolution \ FirstProject .. \ SecondProject \ T4Toolbox.tt
だから私はT4ToolBox.ttのインストールパスを使用しようとします:
<#@ include file="C:\Program Files\T4 Toolbox\T4Toolbox.tt" #>
しかし、別のエラーが発生しました。 「dte」という名前のディレクティブに対して「T4Toolbox.DteProcessor」という名前のプロセッサが見つかりませんでした。
誰かが助けることができれば、それは素晴らしいことです!
編集:私は成功していませんが、それは良いです。Second.ttのルートパスを削除し、FirstProjectのcsprojに次の行を追加しました。
<PropertyGroup>
<IncludeFolders>C:\Program Files\T4 Toolbox</IncludeFolders>
</PropertyGroup>
<DirectiveProcessor Include="T4Toolbox.DteProcessor" >
<Class>T4Toolbox.DteProcessor</Class>
<CodeBase>C:\Program Files\T4 Toolbox\Bin\T4Toolbox.10.0.dll</CodeBase>
</DirectiveProcessor>
<DirectiveProcessor Include="T4Toolbox.TransformationContextProcessor" >
<Class>T4Toolbox.TransformationContextProcessor</Class>
<CodeBase>C:\Program Files\T4 Toolbox\Bin\T4Toolbox.10.0.dll</CodeBase>
</DirectiveProcessor>
ビルドしようとすると、dteプロセッサが見つかりましたが、それでもエラーが発生します。変換コードの実行中に例外がスローされました。プロセスを続行できません。次の例外がスローされました。
System.NullReferenceException: Object reference not set to an instance of an object.
at T4Toolbox.DteProcessor.UpdateFiles(ICollection`1 outputFiles)
at T4Toolbox.OutputManager.UpdateFiles()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at T4Toolbox.TransformationContext.OnTransformationEnded(TextTransformation transformation)
at Microsoft.VisualStudio.TextTemplating7C4960D0E15B020F44790E9542C211BF.GeneratedTextTransformation.Dispose(Boolean disposing) in E:\Dev\MySolution\FirstProject\First.tt:line 18
at Microsoft.VisualStudio.TextTemplating.TextTransformation.Dispose()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result). Line=0, Column=0 E:\Dev\Tools\Microsoft\Microsoft.TextTemplating.targets 397 5 FirstProject