Поделиться через


ITextTemplatingEngineHost.ResolvePath - метод

Позволяет основному приложению предоставить полный путь, получив имя файла или относительный путь.

Пространство имен:  Microsoft.VisualStudio.TextTemplating
Сборка:  Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 (в Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll)

Синтаксис

'Декларация
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

Параметры

  • path
    Тип: System.String
    Путь, который необходимо выполнить.

Возвращаемое значение

Тип: System.String
Объект String, содержащий абсолютный путь.

Заметки

Процессор директив может вызывать этот метод, если имя файла не имеет пути. Основное приложение может попытаться предоставить сведения о пути с помощью поиска конкретных путей для файла и возврата файла и пути, если они найдены.

Этот метод может вызываться 0, 1 или несколько раз для каждого преобразования текстового шаблона. Дополнительные сведения см. в разделе Директивы текстовых шаблонов T4.

Узел может искать сборки в разных местах в порядке, который он предпочитает, или добавить выбранный им путь в начало ссылки на сборку.

Примеры

Этот метод можно вызвать из текстового шаблона. Также следует задать свойство 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 #>

В следующем примере кода показана возможная реализация пользовательского основного приложения. Данный пример кода является частью большего примера. Полный пример см. в разделе Пошаговое руководство. Создание пользовательского хост-класса для текстовых шаблонов.

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

См. также

Ссылки

ITextTemplatingEngineHost Интерфейс

Microsoft.VisualStudio.TextTemplating - пространство имен