0

背景:我正在尝试使用 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 - 内部服务器错误

无法访问请求的页面,因为该页面的相关配置数据无效。

尝试解决:

  1. 删除了 Web.config 和 web.config 文件,并将它们从现有的有效解决方案中导入。
  2. 选择“添加启用调试的新 Web.config 文件”,这将覆盖现有的 Web.config 和 web.config 文件。尽管 Visual Studio 能够覆盖 Web.config,但无法覆盖 web.config(“操作无法完成。未实现”出现在对话框中)。
  3. 将上述 system.web 标签添加到 web.config。
  4. 确保在属性设置中启用了 Asp.Net 调试器
  5. 在运行之前清理并手动删除现有的 .dll
  6. 使用 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 自动设置为适当的值?”

4

1 回答 1

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 被覆盖。

在派生项目中:

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

于 2016-06-10T19:21:50.290 回答