2013-03-05 63 views
13

我想预编译ASP.NET MVC 4站点,但在Azure Web Role中。这是如何捕捉cshtml查看错误特别好。在Azure中预编译ASP.NET MVC项目(不适用于Web部署)

通过在发布 - >文件发布选项中检查几个适当的框,可以轻松完成Web Deploy。

但是,当您有一个以上的WebRole实例时,您将不会使用Web Deploy。我没有看到项目设置中的任何选项(在Build或Package/Publish Web选项卡中)指定这些预编译构建选项。

有没有办法在项目级别指定预编译选项?我并不热衷于任何需要离开工作流程才能发布到Azure的简单(但速度很慢)“发布到Windows Azure”选项的工作流程(也就是说,我不需要以某种方式手动上传蔚蓝云软件包,根本没有)。

+0

@JWendel我找到了这个:http://msdn.microsoft.com/en-us/library/ms229863(v=vs.100).aspx。其中一个选项是:'-u',描述为:“指定Aspnet_compiler.exe应该创建一个预编译应用程序,以允许随后更新诸如.aspx页面之类的内容。”我还没有尝试过,你会把它放在'Build Events'标签 - >'Pre-build event command-line'中吗? – 2013-03-13 22:30:47

+1

不是真的安德鲁,对不起。我确实发现了这个:Razor Generator,但是它相比之下采取了一个激进措施,在安装它之后我必须做一个大的凌乱清理,突然我的所有视图都有问题(比如动态代码,甚至是ViewBag,都会抛出错误)。 – 2014-01-21 04:46:08

回答

0

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

+1

感谢艾伯特,但正如我所说:“我没有看到项目设置(在生成或包装/发布Web选项卡)内的任何选项来指定这些预编译生成选项。”要明确我的意思是在ASP.NET MVC项目属性中。根据你的建议,如果你的意思是这样,我没有检查过云服务设置,但没有。不管怎么说,多谢拉。 – 2013-03-06 05:13:02

6

以下可能不是所有人都想要的,我希望Visual Studio团队可以添加一个简单的UI项目设置切换来执行相同的操作(这可能是一项非常简单的任务),但这里是我找到的一种方法自问这个问题得到编译的cshtml剃须刀文件。不幸的是,虽然它发生在每一个版本上,但实际上速度慢得多,但是如果你只在Release上设置它,那么它是一个很好的折衷:

转到你的项目文件夹(在VS中右键单击项目 - >打开文件夹...),找到.csproj文件,在记事本中打开它(当然是++),然后在xml('Project')的根目录中找到几个PropertyGroup a 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元素(或发改变如果它已经存在),并确保值是真实的,突然间,你会注意到每一个构建需要更长的时间[插入笑脸眨眼图释]。但是,你确实得到了你的剃须刀代码的编译,它会发现你想要的错误,非常好。所以这个团队已经有了这个功能,奇怪的是他们没有将UI选项添加到MVC项目设置中。

我想这回答了我的原始问题:“有什么办法可以在项目级别指定预编译选项吗?”我在网上找到了我想到的答案,我不记得现在在哪里,而且我确定它也在其他地方。感谢大卫再次澄清这个问题。

相关问题