2013-03-19 39 views
0

我正在为MVC 4初学者项目创建项目模板。在View(.cshtml)文件中忽略Visual Studio项目模板通配符

在任何基于普通类的代码文件中,我可以为Visual Studio编写以下语法,以便在创建新项目时使用用户最初提供的项目名填写此$safeprojectname$通配符。

namespace $safeprojectname$.Models 
{ 
    public class Class1 
    {  
     public bool blah { get; set; } 
    } 
} 

但是我的问题是,对于任何视图文件(* .cshtml),这些模板通配符根本不会被评估。因此,通配符原始文本不会被替换,而会保留在标记中,从而在运行项目时反过来炸毁预处理器逻辑。

查看文件代码的例子。

@model $safeprojectname$.Models.NavigationBarModel 

有没有解决方案?

回答

0

我最终想到了这一点以及其他一些陷阱。

生成的.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> 
相关问题