Visual Studio模板参数不返回值?

时间:2015-04-19 16:27:29

标签: visual-studio-templates

我尝试在创建可视工作室模板时获取这些参数,但它没有返回值,它只是保持这样:

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 - Template Parameters

  

SpecificSolutionName:   解决方案的名称。当"创建解决方案目录"选中,SpecificSolutionName具有解决方案名称。当"创建解决方案目录"未选中,SpecificSolutionName为空。

我确保"创建解决方案目录"已经过检查,但它仍然没有给出任何价值。

我如何获得这些值。拜托......?

4 个答案:

答案 0 :(得分:2)

我还发现$ SpecificSolutionName $被破坏了。作为一个解决方案,解决方案的目录通常与解决方案的名称相同,因此:

  • 如果您的解决方案模板只有一个项目:解决方案和项目名称相同,那么您只需使用$ projectname $代替损坏的$ SpecificSolutionName $。

  • 如果您的解决方案模板有多个项目(又名ProjectCollection):将属性CopyParameters =“true”添加到所需的ProjectTemplateLink元素,并使用$ ext_projectname $代替损坏的$ SpecificSolutionName $。

    < / LI>

答案 1 :(得分:1)

我认为在涉及多项目模板时,文档还不够清晰。将向导声明放在多项目定义的vstemplate中,以及您希望用于的项目中,使得&#34;破坏&#34;变量出现。 这是因为,每次声明它时都会启动向导,可以这么说,根据上下文它的行为会有所不同。 注意:变量$SpecificSolutionName$仅在执行多项目vstemplate声明的第一次时具有值,并且仅执行RunStartedProjectFinishedGeneratingRunFinished方法。因此,要在全局上下文中使用它,您需要找出某种机制来保存Wizard执行之间的值,就像在replacementsDictionary中添加新密钥一样。 希望这有帮助。

答案 2 :(得分:0)

我通过将此doctype声明添加到我的.vstemplate的开头来修复此问题。

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

doctype声明不是由模板向导提供的,而是存在于所有预安装的模板中。祝你好运,感谢你在研究这个问题时的耐心等待。

答案 3 :(得分:0)

$SpecificSolutionName$ is always empty. How can I tell if the user is making a new solution directory or not?

令人沮丧的是,文档在两个方面都是错误的。

  1. 没有“SpecificSolutionName”。它是“SpecifiedSolutionName”

  2. 如果用户取消“为解决方案创建目录”,则$ SpecifiedSolutionName $不是空白,如上所述;它实际上与$ projectname $相同。您如何确定何时发生这种情况或未发生的情况以及您正在阅读的内容是否是唯一解决方案文件夹的名称,这是另一个故事。