Визуальные параметры шаблона stuio не возвращают значения?

Я пытаюсь получить эти параметры при создании визуального шаблона студии, но он не возвращает значение, он просто остается таким:

string rootnamespace = $rootnamespace$; // this is the output, it just stays as it was declared
string SpecificSolutionName = $SpecificSolutionName$; // this is the output, it just stays as it was declared

Согласно msdn - Параметры шаблона:

SpecificSolutionName: имя решения. Когда установлен флажок "создать каталог решения", SpecificSolutionName имеет имя решения. Если флажок "создать каталог решения" не установлен, SpecificSolutionName будет пустым.

И я позаботился о том, чтобы "создать каталог решений" был проверен, но все же он не дает никакого значения.

Как я могу получить эти значения. пожалуйста...?

4 ответа

Я также обнаружил, что $SpecificSolutionName$ не работает. В качестве обходного пути выясняется, что каталог решения обычно совпадает с именем решения и поэтому:

  • Если ваш шаблон решения имеет только 1 проект: имена решений и проектов идентичны, и, таким образом, вы можете просто использовать $ projectname $ вместо сломанного $SpecificSolutionName$.

  • Если в шаблоне вашего решения есть несколько проектов (он же ProjectCollection): добавьте атрибут CopyParameters="true" к нужному элементу ProjectTemplateLink и используйте $ext_projectname$ вместо сломанного $SpecificSolutionName$.

Я думаю, что документация недостаточно ясна, когда речь идет о мультипроектных шаблонах. Помещение объявления мастера в vstemplate вашего многопроектного определения и в проектах, которые вы хотите использовать, приводит к появлению "сломанной" переменной. Это потому, что он запускает мастер каждый раз, когда вы его объявляете, так сказать, и он ведет себя по-разному в зависимости от контекста. Обратите внимание: переменная $SpecificSolutionName$ имеет значение только при первом выполнении для многопроектного объявления vstemplate и выполняет только RunStarted, ProjectFinishedGenerating а также RunFinished методы. Итак, чтобы использовать его в глобальном контексте, вам нужно найти какой-то механизм для поддержания значения между выполнениями Мастера, как добавить новый ключ в replacementsDictionaryили что-то. Надеюсь, это поможет.

Я исправил это, добавив объявление doctype в начало моего.vstemplate.

<?xml version="1.0" encoding="utf-8"?>

Объявление doctype не предоставляется мастером шаблонов, но присутствует во всех предустановленных шаблонах. Удачи и спасибо за ваше терпение, пока я исследовал этот вопрос.

$SpecificSolutionName$ всегда пусто. Как я могу узнать, создает ли пользователь новый каталог решений или нет?

К сожалению, документы неверны в двух отношениях.

  1. Не существует "SpecificSolutionName". Это "SpecifiedSolutionName".

  2. Если пользователь снимает флажок "Создать каталог для решения", то $ SpecifiedSolutionName $ не является пустым, как указано; фактически он становится таким же, как $ projectname $. То, как вы определяете, когда это произошло или не произошло, и является ли то, что вы читаете, уникальным именем папки решения, - это отдельная история.

Другие вопросы по тегам