4

很长一段时间以来,我的解决方案中都有一些 .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 -> 运行自定义工具时,一切正常。但是当我重建解决方案时,我收到此错误: Failed to resolve include text for file: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