将自定义格式添加到模板参数Visual Studio项目中

时间:2011-11-04 15:53:15

标签: c# visual-studio visual-studio-2010 templates visual-studio-templates

我已经定义了一个名为classDB.cs的Visual Studio模板。我希望类的默认名称显示为[projectname] DB.cs,其中[projectname]是当前项目的名称(在Create Project对话框中输入)。有没有办法实现这个目标?我尝试将类的名称设置为$safeprojectname$DB.cs,但这不起作用。

更新

我修改了我的项目模板,但在生成项目时给出了这个错误

enter image description here

这是模板类

namespace $safeprojectname$.Models
{
    public class $safeprojectname$DB : DbContext
    {

    }
}

the class in the project

3 个答案:

答案 0 :(得分:3)

我一直在与此类似的错误作斗争了好几天,我终于明白了。 Visual Studio转义.csproj文件中的$。所以你将有一个如下所示的节点:

<Compile Include="Models\%24safeprojectname%24DB.cs" />

在文本编辑器中打开.csproj文件,并将其更改为:

<Compile Include="Models\$safeprojectname$DB.cs" />

并保存文件。您的项目将重新加载,但它不会再尝试转义文件名!导出模板,您会发现现在该参数已被替换。

答案 1 :(得分:2)

尝试这样的模板:

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
  用户在“新建项目”对话框中提供的名称,其中删除了所有不安全的字符和空格。

答案 2 :(得分:-1)

对于有人需要它的情况:

我试图将类添加到类,并且不知道如何根据类的I + {来创建接口名称。 {1}}。

$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,因为此项目旨在构建.zip文件,而不是.dll或.exe文件, 代码文件不会被构建目标编译或视为代码( None文件的构建操作为.vstemplate)。

VSTemplate添加为SomeClass.cs时,会添加相应的界面Item template

enter image description here