我已经定义了一个名为classDB.cs
的Visual Studio模板。我希望类的默认名称显示为[projectname] DB.cs,其中[projectname]是当前项目的名称(在Create Project对话框中输入)。有没有办法实现这个目标?我尝试将类的名称设置为$safeprojectname$DB.cs
,但这不起作用。
更新
我修改了我的项目模板,但在生成项目时给出了这个错误
这是模板类
namespace $safeprojectname$.Models
{
public class $safeprojectname$DB : DbContext
{
}
}
答案 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
。