如何创建自定义 ASP.NET MVC 项目模板?
How can I create a custom ASP.NET MVC project template?
背景: 我正在尝试 create a new C# project 使用 Visual Studio 2013 Ultimate Update 5 的 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 Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related
configuration data for the page is invalid.
尝试解决:
- 已删除 Web.config 和 web.config 文件并导入
他们来自现有的有效解决方案。
- 已选择"Add a new Web.config file with debugging enabled,"
这将覆盖现有的 Web.config 和 web.config 文件。
尽管 Visual Studio 能够覆盖 Web.config,但它失败了
overwrite web.config ("操作无法完成。不是
已实施”出现在对话框中)。
- 将上面的 system.web 标签添加到 web.config。
- 确保 Asp.Net 调试器在 属性 中启用
设置
- 在 运行ning
之前清理并手动删除了现有的 .dll
- 卸载并重新安装ASP.NET带 Nuget 的 MVC
更新:
我没有在 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 后,派生项目 运行 成功(无 "Debugging Not Enabled" 对话框)。
问题变为:"How can I ensure the HintPaths of the derived project are set to the appropriate values automatically?"
我能够使用以下方法创建一个有效的 MVC 模板:
在基础项目中:
在csproj文件中,引用MVC相关dll的形式如下:
<Reference Include="System.Web.Razor">
<HintPath>\BILL\Users\Popper\Desktop\Whosebug\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 被覆盖。
在派生项目中:
保存并构建后,我关闭并重新打开项目。
背景: 我正在尝试 create a new C# project 使用 Visual Studio 2013 Ultimate Update 5 的 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 Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
尝试解决:
- 已删除 Web.config 和 web.config 文件并导入 他们来自现有的有效解决方案。
- 已选择"Add a new Web.config file with debugging enabled," 这将覆盖现有的 Web.config 和 web.config 文件。 尽管 Visual Studio 能够覆盖 Web.config,但它失败了 overwrite web.config ("操作无法完成。不是 已实施”出现在对话框中)。
- 将上面的 system.web 标签添加到 web.config。
- 确保 Asp.Net 调试器在 属性 中启用 设置
- 在 运行ning 之前清理并手动删除了现有的 .dll
- 卸载并重新安装ASP.NET带 Nuget 的 MVC
更新:
我没有在 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 后,派生项目 运行 成功(无 "Debugging Not Enabled" 对话框)。
问题变为:"How can I ensure the HintPaths of the derived project are set to the appropriate values automatically?"
我能够使用以下方法创建一个有效的 MVC 模板:
在基础项目中:
在csproj文件中,引用MVC相关dll的形式如下:
<Reference Include="System.Web.Razor">
<HintPath>\BILL\Users\Popper\Desktop\Whosebug\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 被覆盖。
在派生项目中:
保存并构建后,我关闭并重新打开项目。