Элемент AppliesTo (шаблоны Visual Studio)
Указывает необязательное выражение для сопоставления одной или нескольких возможностей (см. раздел VsProjectCapabilityExpressionMatcher). Возможности предоставляются типами проектов через иерархию как свойство __VSHPROPID5. VSHPROPID_ProjectCapabilities. Таким образом шаблон может использоваться в нескольких типах проектов, имеющих общие применимые возможности.
Этот элемент является необязательным. В файле шаблона может быть не более одного экземпляра этого элемента. Этот элемент позволяет шаблону элемента быть применимым на основании возможностей выбранного в данный момент активного проекта. Его нельзя использовать, чтобы создать шаблон элемента неприменимым. Если AppliesTo
отсутствует или выражение не проходит проверку применимости, TemplateID
или TemplateGroupID
используются, чтобы сделать шаблон применимым, как в предыдущих версиях продукта.
Представлено в обновлении 2 для Visual Studio 2013. Чтобы сослаться на правильную версию, см. статью "Ссылки на сборки", предоставляемые в пакете SDK для Visual Studio 2013 с обновлением 2.
<VSTemplate>
<TemplateData>
<AppliesTo>
Синтаксис
<AppliesTo>Capability1</AppliesTo>
Элементы и атрибуты
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Нет.
Дочерние элементы
Нет.
Родительские элементы
Элемент | Description |
---|---|
TemplateData | Относит шаблон к определенной категории. |
Текстовое значение
Текстовое значение является обязательным. Этот текст задает возможности проекта.
Синтаксис допустимого выражения определяется следующим образом:
Выражение возможностей, например "(VisualC | CSharp) + (MSTest | NUnit)".
"|" — это оператор OR.
Символы "&" и "+" являются операторами AND.
"!" — оператор NOT.
Скобки определяют порядок вычисления выражения.
Значение NULL или пустое выражение считается совпадением.
Возможности проекта могут быть любым символом, кроме этих зарезервированных символов: "':;,+-*/\!~|%$@^()={}[]<>? \t\b\n\r
Пример
В следующем примере показано три разных шаблона. Template1
Применяется либо ко всем типам проектов C#, либо к любому другому типу WindowsAppContainer
проекта, поддерживающим возможность. Template2
применяется ко всем проектам C# любого типа. Template3
применяется к проектам C#, которые не являются проектами WindowsAppContainer
.
<!-- Template 1 -->
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<AppliesTo>CSharp | WindowsAppContainer</AppliesTo>
</TemplateData>
</VSTemplate>
<!-- Template 2 -->
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<AppliesTo>CSharp</AppliesTo>
</TemplateData>
</VSTemplate>
<!-- Template 1 -->
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<AppliesTo>CSharp_Class + (!WindowsAppContainer)</AppliesTo>
</TemplateData>
</VSTemplate>