4

私のソリューションには長い間.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
4

0 に答える 0