Как создать оцененный пользовательский параметр в VSTemplate
Поэтому я изменяю VS-шаблон для нескольких проектов (шаблон проекта Visual Studio) и хочу установить пользовательский параметр в корневом шаблоне, который будет использоваться вспомогательными шаблонами. Тем не менее, я хочу установить его на основе существующего параметра.
Так, например, это прекрасно работает:
<CustomParameter Name="$FaultProject$" Value="MyProject.FaultContracts"/>
Переменная $FaultProject$ заменяется на MyProject.FaultContracts, как и должно быть.
Это, однако, не работает:
<CustomParameter Name="$FaultProject$" Value="$safeprojectname$.FaultContracts"/>
Я ожидаю, что $ safeprojectname $ будет заменено на правильное значение, но это не так. Вместо этого переменная $FaultProject$ заменяется на $safeprojectname$.FaultContracts. $ Safeprojectname $ интерпретируется как литерал, а не как параметр, которым он является.
Это несмотря на тот факт, что в том же файле это работает точно так, как ожидалось:
<ProjectTemplateLink ProjectName="$safeprojectname$.FaultContracts">WCFFaultContract\FaultContract.vstemplate</ProjectTemplateLink>
Любые идеи будут полезны. Я полагаю, что мог бы написать класс IWizard, который бы делал это, но я бы предпочел избежать этого для такой простой функции, если это возможно.
В качестве альтернативы, если я смогу получить параметр, который содержит значение корневого шаблона $ safeprojectname $, это также удовлетворит мою потребность (в под-шаблонах $ safeprojectname $ заменяется именем подпроекта, а не его значением имел в корневом шаблоне).
1 ответ
В многопроектном шаблоне вы можете иметь параметры замены только на уровне проекта. Корневой шаблон находится на уровне решения, и у вас в принципе не может быть $safeprojectname$ там. Однако вы можете реализовать интерфейс IWizard и иметь собственные параметры замены, заменяемые значениями, которые вы задаете.