后台:我正在使用Visual Studio 2013 Ultimate Update 5尝试使用create a new C# project ASP.NET MVC模板。首先,我从空模板创建一个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 - 内部服务器错误
由于相关,无法访问请求的页面 页面的配置数据无效。
尝试解决:
更新:
我没有在Visual Studio中使用导出模板,而是安装了TemplateBuilder and SideWaffle,并按照链接的视频说明构建了自定义项目模板。但是,尝试从模板创建新项目时出现以下错误:
这个错误自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自动设置为适当的值?”
答案 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被覆盖。
在衍生项目中:
保存并建立后,我关闭并重新打开项目。