很长一段时间以来,我的解决方案中都有一些 .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