【问题标题】:How to add a custom project template in new Asp.Net MVC 3 project dialog?如何在新的 Asp.Net MVC 3 项目对话框中添加自定义项目模板?
【发布时间】:2011-09-02 12:16:10
【问题描述】:

我正在使用 MEF 和 Asp.NET MVC 3 开发一个基于插件的应用程序,我想创建一个自定义项目模板,以便在为应用程序创建新插件时提供给第三方开发人员。

我可以轻松地将其导出为项目模板,但由于主机是在 ASP.NET MVC 3 中开发的,因此在新的 Asp.Net MVC 3 项目对话框中似乎更符合逻辑。

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc visual-studio-2010 asp.net-mvc-3


    【解决方案1】:

    如果您查找 Visual Studio 的模板目录,并检查模板:

    MvcWebApplicationProjectTemplatev3.0.cs.zip

    (VS 安装目录)\Common7\IDE\ProjectTemplates\CSharp\Web\1033

    这里要看的是这一行:

    <WizardExtension>
        <Assembly>Microsoft.VisualStudio.Web.Mvc.3.0, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</Assembly>
        <FullClassName>Microsoft.VisualStudio.Web.Mvc.UserInterface.MvcTemplateWizard</FullClassName>
    </WizardExtension>
    

    所以他们有一个自定义向导在这里工作。 这些问题看起来很相似:
    Blank Asp.net MVC template
    How to write an MVC3 Project Template that will offer option Razor or .aspx views

    基本上,他们说该向导不是开源的,但您可以编写自己的自定义向导。

    编辑:
    这里有几个页面告诉您如何创建自己的向导:
    http://msdn.microsoft.com/en-us/library/ms185301.aspx
    http://www.codeproject.com/KB/system/create_VS_wizard.aspx

    【讨论】:

    • 如果您使用 Reflector,您可能需要查看以下方法:code://Microsoft.VisualStudio.Web.Mvc.3.01:3.1.0.0:31bf3856ad364e35/Microsoft.VisualStudio.Web.Mvc。 UserInterface.ProjectTemplates/LoadProjectTemplate(Microsoft.Win32.RegistryKey,String,String):Microsoft.VisualStudio.Web.Mvc.UserInterface.ProjectTemplate
    • 和代码://Microsoft.VisualStudio.Web.Mvc.3.01:3.1.0.0:31bf3856ad364e35/Microsoft.VisualStudio.Web.Mvc.UserInterface.ProjectTemplates/LoadProjectTemplates(System.IServiceProvider,String,System .Collections.Generic.Dictionary):System.Collections.Generic.Dictionary
    【解决方案2】:

    经过一些挖掘和“反思”后,我得到了一个模板,可以成功显示在对话框中。大部分功劳归功于这篇文章:Add custom viewengine to New project dialog?

    让它在我的机器(64 位)上运行的关键是该帖子的答案中提到的注册表路径。我还通过 Reflector 找到了 SupportsHTML5 键,如果你需要的话。

    这是我的模板的屏幕截图:

    这里是注册表项(MyOwnTemplate 节点上还有标题和描述)

    【讨论】:

    • 这是一个很好的答案!一旦你找到它就是如此简单:)
    • 谢谢杰森。这正是我想要的。现在唯一要做的就是以某种方式自动化这个过程:修改注册表项并将 .zip(模板)复制到 Project Templates 文件夹中。
    • 别忘了你需要运行 devenv.exe /setup 来让你的模板进入 VS 的项目模板缓存。
    • 还有一件事......如果您不希望您的模板也显示在新项目对话框中,那么您必须编辑您的 .vstemplate 并在 你必须添加这个:true
    • 您知道一种方法来指定要为自定义模板显示的自定义图标吗?我尝试在 .vstemplate 中指定它,但似乎“新建 MVC 项目”对话框不尊重该设置。
    【解决方案3】:

    我刚刚写了一篇博客文章,介绍了如何执行此操作,并提供了一个 zip 文件和一个批处理文件以及一个示例。

    http://haacked.com/archive/2011/06/06/creating-a-custom-asp-net-mvc-project-template.aspx

    【讨论】:

    • 很棒的帖子...从你宣布要写这篇文章的那一天起,我一直在等待这篇文章:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多