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
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.