Как создать оцененный пользовательский параметр в VSTemplate - PullRequest
10 голосов
/ 10 ноября 2011

Итак, я изменяю 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 Ответ

1 голос
/ 22 мая 2012

В многопроектном шаблоне вы можете иметь параметры замены только на уровне проекта. Корневой шаблон находится на уровне решения, и у вас в принципе не может быть $ safeprojectname $ там. Однако вы можете реализовать интерфейс IWizard и иметь собственные параметры замены, заменяемые значениями, которые вы задаете.

...