Asp.net mvc 在Azure中预编译ASP.NET MVC项目(不使用Web部署)

Asp.net mvc 在Azure中预编译ASP.NET MVC项目(不使用Web部署),asp.net-mvc,azure,Asp.net Mvc,Azure,我想预编译ASP.NET MVC 4站点,但要在Azure Web角色中预编译。它捕获cshtml视图错误的方式特别好 这在Web部署中很容易实现,只需选中Publish->File Publish选项中的几个适当框 但是,当您有一个以上的WebRole实例时,您将不会使用WebDeploy。在项目设置中(在“生成”或“打包/发布Web”选项卡中),我没有看到任何选项可以指定这些预编译生成选项 是否有一种方法可以在项目级别指定预编译选项?我也不喜欢任何需要离开能够发布到Azure的工作流而使用简

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

这在Web部署中很容易实现,只需选中Publish->File Publish选项中的几个适当框

但是,当您有一个以上的WebRole实例时,您将不会使用WebDeploy。在项目设置中(在“生成”或“打包/发布Web”选项卡中),我没有看到任何选项可以指定这些预编译生成选项


是否有一种方法可以在项目级别指定预编译选项?我也不喜欢任何需要离开能够发布到Azure的工作流而使用简单(但速度较慢的)“发布到Windows Azure”选项的选项(也就是说,我对手动上传azure云包不感兴趣,一点也不感兴趣).

您是否检查了应用程序的Azure项目属性?右键单击web角色并单击属性。如果我没有弄错的话,我认为其中可能包含预编译选项。

以下内容可能不是人们所希望的全部,我希望Visual Studio团队可以添加一个简单的UI项目设置切换来执行相同的操作(这可能是一项非常琐碎的任务),但自从问了这个问题之后,我发现了一种方法来编译cshtml razor文件。不幸的是,尽管它发生在每个构建上,这确实要慢得多,但如果只在发布时设置它,那么这是一种很好的折衷:

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


pdbonly
真的
垃圾箱\
痕迹
促使
4.
真的
162, 168, 169, 219, 414, 612, 618, 649, 1591
只需添加
MvcBuildViews
元素(如果已经存在,则从false改为alter),并确保该值为true,您会突然注意到每个构建都需要更长的时间[在此处插入smiley wink表情].但是你确实得到了razor代码的编译,它会像你希望的那样捕获错误,非常好。所以团队已经有了这个插件,奇怪的是他们没有将UI选项添加到MVC项目设置中


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

谢谢Albert,但正如我所说:“在项目设置中(在“生成”或“打包/发布Web”选项卡中),我没有看到任何选项可以指定这些预编译生成选项。“明确地说,我的意思是在ASP.NET MVC项目属性中。根据您的建议,如果您是这样想的,我没有检查云服务设置,但是没有检查。无论如何,谢谢。@JWendel我确实找到了:。其中一个选项是:'-u',描述为:“指定Aspnet_compiler.exe应创建一个预编译的应用程序,该应用程序允许对.aspx页面等内容进行后续更新。“我还没有试过,你能把它放在‘Build Events’选项卡->‘Pre-Build event command-line’中吗?对不起,不是Andrew。我确实找到了这个:Generator,但相比之下,这是一个激进的步骤,安装后我不得不对它进行一次大的清理,突然我所有的视图都出现了问题(就像动态代码一样,甚至ViewBag也在抛出错误)。
  <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>