Ich habe ein T4, das mehrere HTML-Dateien erzeugt.Warum werden die erstellten T4-Ausgänge gelöscht?
Nach dem Erstellen sie alle löscht sie dann. Ich habe gesehen, dass die Dateien sowohl in Explorer als auch in VS2010 Ultimate erstellt wurden (der Lösungs-Explorer-Balken wird größer und verkleinert sich dann gleich wieder).
Ich habe geändert Oleg Synch des updated multiple output code wie folgt:
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);
}
der Anfangscode Dte
gesetzt ist
bool AlwaysKeepTemplateDirty = true;
DTE Dte;
var serviceProvider = Host as IServiceProvider;
if (serviceProvider != null) {
Dte = serviceProvider.GetService(typeof(SDTE)) as DTE;
}
// Fail if we couldn't get the DTE. This can happen when trying to run in TextTransform.exe
if (Dte == null) {
throw new Exception("T4Generator can only execute through the Visual Studio host");
}
es geschieht, ob ich eine Änderung vornehmen und schlagen speichern oder rechts der klicken. tt-Datei und sagen Sie laufen benutzerdefinierte Werkzeug.
Bei hilfreich es ist hier meine tt Erklärung:
<#@ 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" #>
verpasst ein Include in der Einfügung: '<# @ include file =" T4Toolbox.tt "#>' – Maslow
Verwendet diese Vorlage die gleiche Protokolldatei (so dass sie Elemente entfernen kann, wenn es soll), dass der Linq-Generator tut das? Wenn ja, was beinhaltet das und ist es beschreibbar, wenn Sie Ihr benutzerdefiniertes Tool ausführen? –
Ich bin mir nicht sicher, was diese Vorlage ist, sie ist standardmäßig dort, wenn ich eine neue Skriptdatei erstelle. – Maslow