.net 运行转换时如何调试System.NullReferenceException?
我试图使用T4文本模板生成代码,但在运行脚本时,出现以下错误: Running transformation: System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.VisualStudio.TextTemplatingB0A58A4C85EA3D7032675015C6052C89.GeneratedTextTransformation.TransformText() at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result) 正在运行转换:System.NullReferenceException:对象引用未设置为对象的实例。 在Microsoft.VisualStudio.TextTemplatingB0A58A4C85EA3D7032675015C6052C89.GeneratedTextTransformation.TransformText()上 在Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession会话、字符串源、ITextTemplatingEngineHost主机、字符串和结果).net 运行转换时如何调试System.NullReferenceException?,.net,visual-studio,t4,.net,Visual Studio,T4,我试图使用T4文本模板生成代码,但在运行脚本时,出现以下错误: Running transformation: System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.VisualStudio.TextTemplatingB0A58A4C85EA3D7032675015C6052C89.GeneratedTextTransformation.Trans
由于我对T4不熟悉,我不确定该从何处解决此问题。您可以调试T4模板。 MSDN在这方面提供了一些帮助 在调试模式下,您可以查看生成的类,以找出哪里出了问题。
T4保存生成的代码、程序集和PDBs临时文件夹(%USERPROFILE%\Local Settings\TEMP)。.cs文件包含GeneratedTextTransformation的源代码。.cmdline文件包含用于将.cs文件编译成.NET程序集(即.dll文件)的命令行选项。您需要调试模板,以找到发生
NullReferenceException
的位置。Tim Larson有快速概述,Oleg Sych有更多细节,以及他关于T4的其他优秀博客文章
以下是简短的版本:
System.Diagnostics.debugger.Launch()代码>
System.Diagnostics.Debugger.Break()代码>
NullReferenceException
:
<#@ template debug="true" language="C#" #>
<#@ output extension=".txt" #>
<#
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
object bar = null;
#>
foo<#= bar.ToString() #>
福
请务必检查第一个链接,因为在某些版本中,您需要将注册表项
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgJITDebugLaunchSetting
更新为0x2
,以使事情正常运行。我找不到内部异常。