【问题标题】:Precompile ASP.NET MVC Project in Azure (not with Web Deploy)在 Azure 中预编译 ASP.NET MVC 项目(不使用 Web 部署)
【发布时间】:2013-03-05 19:08:38
【问题描述】:

我想预编译一个 ASP.NET MVC 4 站点,但在 Azure Web 角色中。它如何捕获 cshtml 视图错误特别好。

这很容易通过 Web Deploy 完成,只需选中 Publish -> File Publish Options 中的几个适当的框。

但是,当您拥有超过 1 个 WebRole 实例时,您将不会使用 Web Deploy。而且我在项目设置中(在构建或打包/发布 Web 选项卡中)看不到任何用于指定这些预编译构建选项的选项。

有没有办法可以在项目级别指定预编译选项?我也不热衷于任何需要离开能够发布到 Azure 的工作流的选项简单(但缓慢)的“发布到 Windows Azure”选项(即我对必须以某种方式手动上传 azure 云包不感兴趣,一点也不)。

【问题讨论】:

  • @JWendel 我确实找到了这个:msdn.microsoft.com/en-us/library/ms229863(v=vs.100).aspx。选项之一是:'-u',描述为:“指定 Aspnet_compiler.exe 应创建一个预编译的应用程序,该应用程序允许后续更新 .aspx 页面等内容。”我还没试过,你会把它放在“构建事件”选项卡->“预构建事件命令行”中吗?
  • 不是安德鲁,对不起。我确实找到了这个:visualstudiogallery.msdn.microsoft.com/…Generator,但相比之下这是一个激进的步骤,我不得不在安装后对其进行大杂乱的清理,突然间我所有的观点都有了问题(比如动态代码,甚至 ViewBag,都在抛出错误)。

标签: asp.net-mvc azure


【解决方案1】:

以下内容可能不是人们想要的一切,我希望 Visual Studio 团队可以添加一个简单的 UI 项目设置切换来做同样的事情(这可能是一项非常微不足道的任务),但这是我发现的一种方法问这个问题来编译 cshtml razor 文件。不幸的是,虽然每次构建都会发生这种情况,这确实要慢得多,但如果你只在 Release 上设置它,那么这是一个很好的折衷方案:

进入你的项目文件夹(在VS中右键项目,->打开文件夹...),找到.csproj文件,在记事本中打开(当然是++),然后找到几个PropertyGroups在 xml ('Project') 的根目录下,PropertyGroup 具有此条件,它仅指定特定于发布模式的设置(还有另一个用于调试,您可以在上面执行相同的操作):

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <MvcBuildViews>true</MvcBuildViews>
    <NoWarn>162, 168, 169, 219, 414, 612, 618, 649, 1591</NoWarn>
  </PropertyGroup>

只需添加 MvcBuildViews 元素(或者如果它已经存在则从 false 更改)并确保该值为 true,然后突然之间,您会注意到每次构建都需要更长的时间 [在此处插入笑脸眨眼表情]。但是你确实得到了你的剃刀代码的编译,它会像你想要的那样捕获错误,非常好。所以团队已经有了这个,奇怪的是他们没有将 UI 选项添加到 MVC 项目设置中。

我想这回答了我最初的问题:“有没有办法可以在项目级别指定预编译选项?”我在网上某处找到了我认为的答案,我不记得现在在哪里,而且我确信它也在其他地方。感谢 David 再次阐明了这个问题。

【讨论】:

    【解决方案2】:

    您是否检查过应用程序的 Azure 项目属性?右键单击 Web 角色,然后单击属性。如果我没记错的话,我认为它可能有预编译选项。

    【讨论】:

    • 感谢 Albert,但正如我所说:“我在项目设置(在构建或打包/发布 Web 选项卡中)中没有看到任何用于指定这些预编译构建选项的选项。”需要明确的是,我的意思是在 ASP.NET MVC 项目属性中。根据您的建议,如果您是这个意思,我没有检查云服务设置,但那里什么也没有。无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多