Msbuild 如果在global.asax中定义了视图引擎命名空间导入,则aspnet_编译器无法编译包含Razor视图的web项目

Msbuild 如果在global.asax中定义了视图引擎命名空间导入,则aspnet_编译器无法编译包含Razor视图的web项目,msbuild,razor,asp.net-mvc-3,Msbuild,Razor,Asp.net Mvc 3,我刚刚尝试使用我们的标准构建脚本(rake,但这并不重要)构建一个带有Razor视图的新MVC项目 在开发该项目时,我注意到Razor目前不支持web.config中的名称空间导入,但允许您在global.asax中包含名称空间。事实上,我对此感到更高兴,因为我认为如果它破坏了你的整个应用程序,就没有必要配置你的导入 但是,当使用aspnet_编译器编译网站时,它不会运行global.asax,因此不会导入名称空间,并且不会编译任何视图。有没有办法解决这个问题,理想情况下,我想尝试将我的视图作为

我刚刚尝试使用我们的标准构建脚本(rake,但这并不重要)构建一个带有Razor视图的新MVC项目

在开发该项目时,我注意到Razor目前不支持web.config中的名称空间导入,但允许您在global.asax中包含名称空间。事实上,我对此感到更高兴,因为我认为如果它破坏了你的整个应用程序,就没有必要配置你的导入


但是,当使用aspnet_编译器编译网站时,它不会运行global.asax,因此不会导入名称空间,并且不会编译任何视图。有没有办法解决这个问题,理想情况下,我想尝试将我的视图作为构建脚本的一部分进行编译,以尽快捕获错误,但在这个阶段,我很高兴能够从构建脚本发布站点。

您可以尝试PreAppStart方法:。

您可以尝试PreAppStart方法:。

查看以下答案:

简而言之,Razor视图引擎有自己的配置部分,您可以在其中导入要在Razor视图中引用的名称空间

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

请参见以下答案:

简而言之,Razor视图引擎有自己的配置部分,您可以在其中导入要在Razor视图中引用的名称空间

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="MyCustomHelpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>