我正在为MVC 4初学者项目创建项目模板。
在任何基于普通类的代码文件中,我可以为visual studio编写以下语法,以便在创建新项目时使用用户最初提供的项目名称填充此$safeprojectname$
通配符。
namespace $safeprojectname$.Models
{
public class Class1
{
public bool blah { get; set; }
}
}
然而我的问题是,对于任何视图文件(* .cshtml),这些模板通配符根本不会被评估。因此,通配符原始文本不会被替换,而是会持久存储到标记中,而标记又会在运行项目时轰炸预处理程序逻辑。
视图文件代码的示例。
@model $safeprojectname$.Models.NavigationBarModel
对此有什么解决方案吗?
答案 0 :(得分:1)
我最终想到了这一点以及其他一些问题。
生成的.vstemplate文件会为导出的模板中包含的每个资源创建一个<ProjectItem>
元素。
对于视图,ReplaceParameters
属性需要手动设置为true,默认设置为false。
<Folder Name="Shared" TargetFolderName="Shared">
<ProjectItem ReplaceParameters="true" TargetFileName="_Layout.cshtml">_Layout.cshtml</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="_LoginPartial.cshtml">_LoginPartial.cshtml</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="_NavigationBar.cshtml">_NavigationBar.cshtml</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Error.cshtml">Error.cshtml</ProjectItem>
</Folder>