我正在使用VS 2015模板为我创建一个项目,在我的C#类中,我有$projectname$
这样的替换,如果我将这个项目命名为MyTemplatedProject
,它们的效果很好。我使用$projectname$
作为类名和命名空间的一部分。
如果我创建了一个像$projectname$Context
这样的类,它会变成MyTemplatedProjectContext
,一切都很好。
但是如果我将项目命名为MyTemplatedProject.FrontEnd
我生成的类有问题,因为他们的名字中有.
。
替换$projectname$Context
变为MyTemplatedProject.FrontEndContext
,但这对于类名不起作用。
如何基于$projectname$
创建自定义参数,理想情况下我会有一个像$projectnameUpToFirstDot$
这样的参数,当项目名称为MyTemplatedProject
时,它只返回MyTemplatedProject.FrontEndContext
?
答案 0 :(得分:1)
如果您只想根据项目名称生成有效的类名,而不是创建自定义模板参数,则可以将$projectname$
更改为$safeprojectname$
,即documented为:
用户在“新建项目”对话框中提供的名称,其中删除了所有不安全的字符和空格。
答案 1 :(得分:0)
一周前我遇到了完全相同的问题。我只需要在我的模板中包含一些自定义变量,这些变量将在$projectname$
大写中解析,而另一个在小写中解析。这样的事情。
对我来说,使用VS'自定义向导模板开发自己的项目向导是最有效和最灵活的方式。
除非JavaScript& HTML对你来说不是一件好事,对$projectname$
之类的变量进行一些字符串操作非常容易。
设置完成后,进入default.js
并在功能
function onFinish()
{
...
var prjName = wizard.FindSymbol('PROJECT_NAME');
wizard.AddSymbol('PROJECT_NAME_WITHOUT_DOTS', prjName.split('.')[0]);
...
}
split('.')
删除所有点并将其分成字符串数组。使用[0],您只选择第一个点的部分。
然后,您可以在模板文件中使用以下语法处理符号PROJECT_NAME_WITHOUT_DOTS
:
class [!output PROJECT_NAME_WITHOUT_DOTS] {
...
}