使用T4ToolBox在构建上应用.tt

时间:2012-05-30 15:29:32

标签: build transform t4-toolbox

我的解决方案中有一些.tt文件很长一段时间了。 我最近决定在构建时通过添加到我的csproj来启动转换:

<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
    <TransformOutOfDateOnly>false</TransformOutOfDateOnly>  
</PropertyGroup>  

我有一个第一个.tt文件(First.tt),其中包含来自同一解决方案的另一个项目的第二个.tt文件(Second.tt):

<#@ include file="..\SecondProject\Second.tt" #>

在Second.tt中,我包括T4Toolbox.tt:

<#@ include file="T4Toolbox.tt" #>

当我使用右键单击启动First.tt时,一切正常 - &gt;运行自定义工具。 但是当我重建解决方案时,我得到了这个错误: 无法解析文件的包含文字:E:\ Dev \ MySolution \ FirstProject .. \ SecondProject \ T4Toolbox.tt

所以我尝试使用T4ToolBox.tt的安装路径:

 <#@ include file="C:\Program Files\T4 Toolbox\T4Toolbox.tt" #>

但我还有另一个错误:找不到名为'dte'的指令'T4Toolbox.DteProcessor'

如果有人可以提供帮助,那就太棒了!

编辑:我没有成功,但它更好。我删除了Second.tt中的root路径,并将以下行添加到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

0 个答案:

没有答案