我正在将ASP.NET MVC添加到WebForms应用程序中。您从头开始创建的ASP.NET MVC解决方案的一个简洁功能是右键单击解决方案资源管理器并添加> New Item ...将提供包含MVC模板的模板列表。但是,在WebForms应用程序中,这些模板不会出现。
我认为.sln解决方案文件中可能有一个设置表明其中一个是ASP.NET MVC应用程序,但我找不到任何突出的内容。
编辑:要扩展问题,当您右键单击MVC应用程序的解决方案资源管理器中的Controllers文件夹时,Visual Studio如何知道在“添加”菜单上添加“控制器...”菜单项?同样,当您右键单击Views文件夹时,它会在“Add”菜单中添加“View ...”菜单项。 Visual Studio从哪里获取此信息,如何将这两个文件夹添加到另一个Web应用程序并获得相同的功能?
想法?
答案 0 :(得分:2)
我相信它的逻辑包含在dll中
Microsoft.VisualStudio.Web.ExtensionsUI
在创建新的ASP.NET MVC项目时使用的Project模板中注册了该文件:
<WizardExtension>
<Assembly>
Microsoft.VisualStudio.Web.Extensions,
Version=9.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
</Assembly>
<FullClassName>
Microsoft.VisualStudio.Web.Mvc.TemplateWizard
</FullClassName>
</WizardExtension>
C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ProjectTemplates \ CSharp \ Web \ 1033 \ MvcWebApplicationProjectTemplatev1.cs.zip
您可能还会在.xxproj文件中乱搞项目类型指南:
<ProjectTypeGuids>
{603c0e0b-db56-11dc-be95-000d561079b0};
{349c5851-65df-11da-9384-00065b846f21};
{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>
似乎是ASP.NET MVC项目的默认项目,将它们与Web应用程序中的项目进行比较,并从那里开始。
但是,在很多这种情况下我都同意gisresearch:首先创建更复杂的项目(MVC)更容易,然后将原始项目移动到其中。
此外,没有什么可以阻止你在同一个Web应用程序中托管多个项目 - 将公共逻辑从Web应用程序拉入共享类库,然后从一个干净的MVC应用程序引用它,命名空间略有不同,然后合并IIS中的两个站点,将dll放入共享bin文件夹(或强烈命名它们并将它们放入全局程序集缓存中),共享图像/脚本,然后离开 - 你只需要注意Global.asax,这两者都很常见。
答案 1 :(得分:0)
反过来怎么样。首先创建一个asp.net mvc项目,然后添加您的Web表单代码。
以下是Scott Hanselman的hybrid app示例。
您也可以考虑创建一个默认的asp.net mvc应用程序和asp.net Web表单应用程序,然后对两个项目进行文本比较,看看有什么区别。
答案 2 :(得分:0)
与Zhaph一样,添加ProjectTypeGuid对我有用。卸载Web项目,编辑并将额外的ProjectTypeGuid添加到现有列表中。
{603c0e0b-db56-11dc-be95-000d561079b0};