如何创建自定义ASP.NET MVC项目模板?

时间:2016-06-06 20:11:35

标签: c# asp.net-mvc visual-studio iis-express sidewaffle

后台:我正在使用Visual Studio 2013 Ultimate Update 5尝试使用create a new C# project ASP.NET MVC模板。首先,我从空模板创建一个Web应用程序并包含MVC引用。然后,我添加了应用程序的所有基本必需组件,例如模型,控制器和视图。接下来,我运行它,它的工作原理。然后,我将其导出为项目模板。

过去,我已使用上述方法成功为Web Api和控制台应用程序创建了模板。

问题描述:当我尝试将模板用于新项目时,出现以下错误:

Debugging Not Enabled Image

根据错误消息和Microsoft,我应该可以通过在Web.config文件中放置以下代码来解决此问题:

  <system.web>
    <compilation debug="true" targetFramework="4.5.1"/>
    <httpRuntime targetFramework="4.5.1"/>
  </system.web>

然而,这已经存在,对话框仍然存在。

如果我尝试在没有调试的情况下运行,我在浏览器中收到以下错误:

  

HTTP错误500.19 - 内部服务器错误

     

由于相关,无法访问请求的页面   页面的配置数据无效。

尝试解决:

  1. 删除了Web.config和web.config文件并导入 他们来自现有的解决方案。
  2. 选择“添加启用调试的新Web.config文件” 它会覆盖现有的Web.config和web.config文件。 虽然Visual Studio能够覆盖Web.config,但它失败了 覆盖web.config(“操作无法完成。不是 实施“出现在对话框中。”
  3. 将上述system.web标记添加到web.config。
  4. Ensured that the Asp.Net debugger is enabled in property settings
  5. 在运行
  6. 之前清理并手动删除现有的.dll
  7. 使用Nuget
  8. 卸载并重新安装ASP.NET MVC

    更新:

    我没有在Visual Studio中使用导出模板,而是安装了TemplateBuilder and SideWaffle,并按照链接的视频说明构建了自定义项目模板。但是,尝试从模板创建新项目时出现以下错误:

    enter image description here

    这个错误自4月以来一直是open issue within github,所以看起来我运气不好。

    第二次更新:根本原因分析

    我已确定基于导出模板的项目失败的根本原因。比较基础项目和派生项目的参考文献揭示了以下内容:

    派生:

    <Reference Include="System.Web.Razor">
      <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies\System.Web.Razor.dll</HintPath>
    </Reference>
    

    基地:

    <Reference Include="System.Web.Razor">
      <HintPath>..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
    </Reference>
    

    一旦派生项目中的HintPaths重置为基础项目的HintPaths,派生项目就会成功运行(No“Debugging Not Enabled”对话框)。

    问题变为:“如何确保派生项目的HintPaths自动设置为适当的值?”

1 个答案:

答案 0 :(得分:0)

我能够使用以下方法创建一个有效的MVC模板:

在基础项目中:

在csproj文件中,对MVC相关dll的引用采用以下形式:

<Reference Include="System.Web.Razor">
  <HintPath>\\BILL\Users\Popper\Desktop\Stackoverflow\UNCPathNonSpecificPrivateReferences\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

特别是,dll的UNC路径可以防止HintPath被覆盖。

在衍生项目中:

保存并建立后,我关闭并重新打开项目。