Partager via


ITextTemplatingEngineHost.ResolvePath, méthode

Permet à l'hôte de fournir un chemin d'accès complet, en fonction d'un nom de fichier ou d'un chemin d'accès relatif.

Espace de noms :  Microsoft.VisualStudio.TextTemplating
Assembly :  Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 (dans Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll)

Syntaxe

'Déclaration
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

Paramètres

Valeur de retour

Type : System.String
String qui contient un chemin d'accès absolu.

Notes

Un processeur de directive peut appeler cette méthode si un nom de fichier ne comporte pas de chemin d'accès.L'hôte peut essayer de fournir les informations relatives au chemin d'accès en recherchant le fichier dans les chemins d'accès spécifiques et en retournant le fichier et chemin d'accès en cas de recherche.

Cette méthode peut être appelée plusieurs fois, 1 fois ou 0 fois pour chaque transformation du modèle de texte.Pour plus d'informations, consultez Directives de modèles de texte T4.

Un hôte peut rechercher l'assembly dans différents emplacements, dans l'ordre souhaité, ou ajouter le chemin d'accès de son choix au début de la référence d'assembly.

Exemples

Vous pouvez appeler cette méthode à partir d'un modèle de texte.Vous devez définir hostspecific="true".

<#@ 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 #>

L'exemple de code suivant montre une implémentation possible pour un hôte personnalisé.Cet exemple de code est extrait d'un exemple plus développé.Pour obtenir un exemple complet, consultez Procédure pas à pas : création d'un hôte de modèle de texte personnalisé.

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;
}

Sécurité .NET Framework

Voir aussi

Référence

ITextTemplatingEngineHost Interface

Microsoft.VisualStudio.TextTemplating, espace de noms