Freigeben über


ITextTemplatingEngineHost.ResolvePath-Methode

Ermöglicht einem Host, einen vollständigen Pfad bereitzustellen, wenn ein Dateiname oder ein relativer Pfad angegeben wird.

Namespace:  Microsoft.VisualStudio.TextTemplating
Assembly:  Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 (in Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll)

Syntax

'Declaration
Function ResolvePath ( _
    path As String _
) As String
string ResolvePath(
    string path
)
String^ ResolvePath(
    String^ path
)
abstract ResolvePath : 
        path:string -> string 
function ResolvePath(
    path : String
) : String

Parameter

Rückgabewert

Typ: System.String
Eine String, die einen absoluten Pfad enthält.

Hinweise

Ein Direktivenprozessor kann diese Methode aufrufen, wenn ein Dateiname keinen Pfad hat. Der Host kann versuchen, durch Suchen in bestimmten Pfaden nach der Datei und Zurückgeben der Datei und des Pfads, wenn gefunden, Pfadinformationen bereitzustellen.

Diese Methode kann als 0-mal, 1-mal oder mehrmals für jede Textvorlagentransformation aufgerufen werden. Weitere Informationen finden Sie unter T4-Textvorlagendirektiven.

Ein Host kann nach der Assembly an anderen Speicherorten suchen, in der Reihenfolge, die er vorzieht, oder aber einen Pfad seiner Wahl am Anfang des Assemblyverweises hinzufügen.

Beispiele

Sie können diese Methode von einer Textvorlage aus aufrufen. Sie müssen hostspecific="true" festlegen.

<#@ template hostspecific="true" language="C#" #>
<#@ output extension=".txt" #>
<#@ import namespace="System.IO" #>
<#
 // Find a path within the same project as the text template:
 string myFile = File.ReadAllText(this.Host.ResolvePath("MyFile.txt"));
#>
Content of myFile is:
<#= myFile #>

Im folgenden Codebeispiel wird eine mögliche Implementierung für einen benutzerdefinierten Host veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels. Das vollständige Beispiel finden Sie unter Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Textvorlagenhosts.

public string ResolvePath(string fileName)
{
  if (fileName == null)
  {
    throw new ArgumentNullException("the file name cannot be null");
  }
  //If the argument is the fully qualified path of an existing file,
  //then we are done
  if (File.Exists(fileName))
  {
    return fileName;
  }
  //Maybe the file is in the same folder as the text template that 
  //called the directive.
  string candidate = Path.Combine(Path.GetDirectoryName(this.TemplateFile), fileName);
  if (File.Exists(candidate))
  {
    return candidate;
  }
  //Look more places.
  //More code can go here...
  //If we cannot do better, return the original file name.
  return fileName;
}

.NET Framework-Sicherheit

Siehe auch

Referenz

ITextTemplatingEngineHost Schnittstelle

Microsoft.VisualStudio.TextTemplating-Namespace