Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 为什么创建T4输出然后删除?_Visual Studio_T4 - Fatal编程技术网

Visual studio 为什么创建T4输出然后删除?

Visual studio 为什么创建T4输出然后删除?,visual-studio,t4,Visual Studio,T4,我有一个T4,它正在生成多个.html文件 在创建完它们之后,它会删除它们。我已经看到在explorer和VS2010 ultimate中创建的文件(解决方案资源管理器栏会先增长,然后又收缩) 我对Oleg Synch进行了如下修改: ProjectItem GetTemplateItem(DTE dte) { return // Find the .tt file's ProjectItem dte.Solution.FindProjectItem(Host.TemplateFile)

我有一个T4,它正在生成多个.html文件

在创建完它们之后,它会删除它们。我已经看到在explorer和VS2010 ultimate中创建的文件(解决方案资源管理器栏会先增长,然后又收缩)

我对Oleg Synch进行了如下修改:

ProjectItem GetTemplateItem(DTE dte)
{
 return   // Find the .tt file's ProjectItem
 dte.Solution.FindProjectItem(Host.TemplateFile);
}

void SaveOutput(string outputFileName,List<string> savedOutputs)
 {
  string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
  string outputFilePath = Path.Combine(templateDirectory, outputFileName);  
  var text= this.GenerationEnvironment.ToString();
  WriteDiagnosticLine("Writing:"+text.Length+" characters");
  File.WriteAllText(outputFilePath,text);
  this.GenerationEnvironment = new StringBuilder();  

  ProjectItem templateProjectItem = GetTemplateItem(Dte);

  templateProjectItem.ProjectItems.AddFromFile(outputFilePath);  

  savedOutputs.Add(outputFileName);

  WriteDiagnosticLine("Added:"+outputFileName);
 }

void WriteDiagnosticLine(string line)
{
System.Diagnostics.Debug.WriteLine(line);
}
无论我是进行更改并点击save,还是右键单击.tt文件并说运行自定义工具,都会发生这种情况

如果有帮助,我的tt声明如下:

<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ output extension=".txt" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="Microsoft.VisualStudio.Shell.Interop.8.0" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name="EnvDTE80" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="Microsoft.VisualStudio.Shell.Interop" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="EnvDTE80" #>

删除

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

似乎已经解决了。很奇怪。

删除

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


似乎已经解决了。非常奇怪。

错过了粘贴中的一个include:
该模板是否使用了与linq生成器相同的日志文件(以便它可以在需要时删除项目)?如果是这样,那里面有什么?当你运行你的自定义工具时,它是可写的吗?我不确定该模板是什么,当我创建一个新的脚本文件时,默认情况下它就在那里。在粘贴中缺少一个包含:
该模板是否使用与linq生成器相同的日志文件(以便它可以在应该删除项目时删除项目)?如果是这样的话,那里面有什么?当你运行你的自定义工具时,它是可写的吗?我不确定这个模板是什么,当我创建一个新的脚本文件时,默认情况下它就在那里。