背景:我正在尝试使用 Visual Studio 2013 Ultimate Update 5 为 ASP.NET MVC创建一个新的 C# 项目模板。首先,我从空模板创建一个 Web 应用程序并包含 MVC 引用。然后,我添加了应用程序所需的所有基本组件,例如模型、控制器和视图。接下来,我运行它,它可以工作。然后,我将其导出为项目模板。
过去,我已经使用上述方法成功地为 Web Api 和控制台应用程序创建了模板。
问题描述:当我尝试将模板用于新项目时,出现以下错误:
根据错误消息和Microsoft,我应该能够通过在我的 Web.config 文件中放置以下代码来解决此问题:
<system.web>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime targetFramework="4.5.1"/>
</system.web>
但是,这已经存在,并且对话框仍然存在。
如果我尝试在不调试的情况下运行,我会在浏览器中收到以下错误:
HTTP 错误 500.19 - 内部服务器错误
无法访问请求的页面,因为该页面的相关配置数据无效。
尝试解决:
- 删除了 Web.config 和 web.config 文件,并将它们从现有的有效解决方案中导入。
- 选择“添加启用调试的新 Web.config 文件”,这将覆盖现有的 Web.config 和 web.config 文件。尽管 Visual Studio 能够覆盖 Web.config,但无法覆盖 web.config(“操作无法完成。未实现”出现在对话框中)。
- 将上述 system.web 标签添加到 web.config。
- 确保在属性设置中启用了 Asp.Net 调试器
- 在运行之前清理并手动删除现有的 .dll
- 使用 Nuget 卸载并重新安装 ASP.NET MVC
更新:
我没有在 Visual Studio 中使用导出模板,而是安装了TemplateBuilder 和 SideWaffle,并按照链接的视频说明构建自定义项目模板。但是,尝试从模板创建新项目时出现以下错误:
自 4 月以来,此错误一直是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 自动设置为适当的值?”