[英]Adding custom format to a template parameters Visual studio project
我已经定义了一个名为classDB.cs
的Visual Studio模板。 我希望类的默认名称显示为[projectname] DB.cs,其中[projectname]是当前项目的名称(在Create Project对话框中输入)。 有没有办法实现这个目标? 我尝试将类的名称设置为$safeprojectname$DB.cs
,但这不起作用。
UPDATE
我修改了我的项目模板,但在生成项目时给出了这个错误
这是模板类
namespace $safeprojectname$.Models
{
public class $safeprojectname$DB : DbContext
{
}
}
几天来,我一直在与此类似的错误作斗争,我终于明白了。 Visual Studio转义.csproj文件中的$。 所以你将有一个如下所示的节点:
<Compile Include="Models\%24safeprojectname%24DB.cs" />
在文本编辑器中打开.csproj文件,并将其更改为:
<Compile Include="Models\$safeprojectname$DB.cs" />
并保存文件。 您的项目将重新加载,但它不会再尝试转义文件名! 导出模板,您会发现现在该参数已被替换。
尝试这样的模板:
using System;
//...
namespace $rootnamespace$ {
class $safeitemname$DB {
}
}
适合我。
确保更新正确的模板(应位于Windows 7上的C:\\Users\\[user]\\Documents\\Visual Studio 2010\\Templates\\ItemTemplates
)并重新启动Visual Studio。
上面的代码用于项目模板,但不应与项目模板不同。 根据MSDN, $safeitemname$
和$safeprojectname$
参数的行为相同:
safeitemname
用户在“添加新项”对话框中提供的名称,其中删除了所有不安全的字符和空格。safeprojectname
用户在“新建项目”对话框中提供的名称,其中删除了所有不安全的字符和空格。
对于有人需要它的情况:
我试图将接口添加到类中,并且不知道如何实现接口名称是由类的名称组成的,例如I
+ $fileinputname$
。
在*.vstemplate
文件中,只需使用I$fileinputname$.cs
作为接口的TargetFileName
:
<TemplateContent>
<ProjectItem TargetFileName="$fileinputname$.cs" ReplaceParameters="true">SomeClass.cs</ProjectItem>
<ProjectItem TargetFileName="I$fileinputname$.cs" ReplaceParameters="true">ISomeClass.cs</ProjectItem>
</TemplateContent>
在ISomeClass.cs
文件中再次使用I$fileinputname$
作为接口名称:
namespace $rootnamespace$
{
public interface I$fileinputname$
{
}
}
重要:
将文件SomeClass.cs
和ISomeClass.cs
Build Action设置为None
因为此项目旨在构建.zip文件,而不是.dll或.exe文件,代码文件不会被构建目标编译或视为代码(该.vstemplate
文件具有的生成操作VSTemplate
)。
结果当SomeClass.cs
作为Item template
添加时,添加了相应的接口ISomeClass.cs
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.