Визуальные параметры шаблона 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$ всегда пусто. Как я могу узнать, создает ли пользователь новый каталог решений или нет?
К сожалению, документы неверны в двух отношениях.
Не существует "SpecificSolutionName". Это "SpecifiedSolutionName".
Если пользователь снимает флажок "Создать каталог для решения", то $ SpecifiedSolutionName $ не является пустым, как указано; фактически он становится таким же, как $ projectname $. То, как вы определяете, когда это произошло или не произошло, и является ли то, что вы читаете, уникальным именем папки решения, - это отдельная история.