13

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

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

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

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

4

2 回答 2

6

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

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

  <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 项目设置中。

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

于 2014-12-17T19:22:03.840 回答
0

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

于 2013-03-06T03:33:19.553 回答