我正在尝试使用VS2010 professional,Windows 7调试以下T4模板文件。
但是调试器没有突出显示文件中的正确行:“Texttemplate2.tt”
文件1:File1.tt
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ include file="Texttemplate2.tt" #>
<#
System.Diagnostics.Debugger.Launch();
int a= 10;
Write("ASS");
GetProperty("User","UserName");
#>
文件:Texttemplate2.tt
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.IO" #>
<#+
public void Load()
{
string doc=null;
if(doc == null)
{
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string absolutePath = Path.Combine(templateDirectory,"../../App_Data/EntityUI_MetaData_Appsettings.xml");
}
}
public string GetProperty(string Entity, string prop)
{
Load();
string node="none";
if (node != "0" )
{
if (node == Entity )
{
return node;
}
}
return null;
}
#>
让我详细解释一下这个问题。我创建了上面两个T4模板文件。现在我想调试我的T4模板文件“File1.tt”代码(不是生成的代码)。我做了什么我用
启动了调试器System.Diagnostics.Debugger.Launch();
并设置断点
int a= 10;
。现在按F5导致我的断点被击中。
int a= 10;
现在突出显示黄色颜色为BACKGOUND和黄色箭头,如左图所示。此后按F11直到你到达 p>
GetProperty
当调用此方法时,您会注意到黄色箭头表示当前正在执行的语句未突出显示。
Meant,supppose Line:20是下一个执行语句,调试器高亮显示行:texttemplatefile2.tt中的10
答案 0 :(得分:0)
我遇到了同样的问题。我还没有办法让这条线变得正确。但是,我发现你可以添加
class Program
{
static void Main(string[] args)
{
var rawData = new string[]{
"Pansy_Parkinson",
"42",
"21",
"18",
"19",
"9",
"Dean_Thomas",
"40",
"10",
"35",
"22",
"4"
};
var Cards = new List<Card>();
for(int i = 0; i < rawData.Length; i+=6)
{
var card = new Card(rawData[0 + i], rawData[1 + i].ToInt(), rawData[2 + i].ToInt(), rawData[3 + i].ToInt(), rawData[4 + i].ToInt(), rawData[5 + i].ToInt());
Cards.Add(card);
}
}
}
public static class StringExtensions
{
public static int ToInt(this string item)
{
return Convert.ToInt32(item);
}
}
public class Card
{
private string Name;
private int Magic;
private int Cunning;
private int Courage;
private int Wisdom;
private int Temper;
public Card(string name, int magic, int cunning, int courage, int wisdom, int temper)
{
Name = name;
Magic = magic;
Cunning = cunning;
Courage = courage;
Wisdom = wisdom;
Temper = temper;
}
}
在要测试的行上,然后调试T4模板。你的IDE仍然会出错,但是如果你去代码中触发中断的地方 - 中断应该 - 你至少可以检查变量。< / p>
警告:如果您尝试使用调试器行保存或运行模板,则有时会导致Visual Studio崩溃。当你不使用时立即注释掉它。