关于 VS2010 中 ASP.NET MVC2 网站编译任务的几个问题

时间:2022-08-05 03:18:39

 

当你创建了一个 ASP.NET MVC2 的网站应用程序的时候,如果你使用文本方式打开项目文件看一看,就会发现一个有趣的配置选项

 

关于 VS2010 中 ASP.NET MVC2 网站编译任务的几个问题 

 

这个选项启用延后的 aspnet_compiler 创建任务,aspnet_compiler程序负责在设计期间编译你的 aspx 页面,并且报告编译过程中的错误。通常情况下,这个程序一般用来在在修改之后,第一次加载之前编译你的站点。以提高访问的速度。在这个特殊的文件夹下可以找到这个程序:

 

%系统文件夹%\Microsoft.NET\Framework\v4.0.30319

 

由于这个选项延后了编译任务,所以,这就是你可以在页面文件存在错误的情况下调试代码程序,而不会看到错误,直到页面的时候才会出现错误的原因。

 

如果你将这个选项设置为 true,那么,你将发现将会花费更多的时间来编译你的网站,你的每一个 aspx 文件都将被编译成一个 dll 文件,这些文件可以在编译的临时文件夹中发现,它们应该位于这个位置:

 

%系统文件夹%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

 

但是,在 .NET 4.0 下开发的时候,我发现实际位于这个位置

 

c:\Users\用户名\AppData\Local\Temp\Temporary ASP.NET Files

  

继续往下看这个文件,你会看到下面的一段。

 

关于 VS2010 中 ASP.NET MVC2 网站编译任务的几个问题

 

 

在你将 MvcBuildViews选项设置为真之后,这个编译任务将在你的网站的根目录执行编译任务,

 

第二个问题

如果在你的网站文件夹下存在多个 web.config 文件,比如说在 obj 文件夹中,如果你打包或者发布网站的时候,将会导致一个问题出现。错误信息如下所示:

It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

 

为了解决这个问题,你可以修改一下项目文件,在 MvcBuildViews 配置之后增加一个如下的设置。

 

<MvcBuildViews>false</MvcBuildViews>                                    

<BaseIntermediateOutputPath>有权限访问的目录</BaseIntermediateOutputPath>

 

这将会导致 MSDeploy 生成的文件输出到你指定的位置,这样就可以解决这个问题,默认情况下并没有明确设置这个位置。

 

还有一个问题就是默认情况下总是使用 .NET 4.0 aspnet_compiler 工具,如果你希望能够使用 ASP.NET 2.0 版的 aspnet_compiler,比如说你的目标是 .NET 3.5,那么,你可以如下设置你的选项。

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">

<AspNetCompiler

ToolPath="C:\Windows\Microsoft.NET\Framework\v2.0.50727" 

VirtualPath="temp" 

PhysicalPath="$(ProjectDir)\..\Web" />

</Target>

 

这个 ToolPath 用来设置 aspnet_compiler 工具所在的目录。

 

最后一个问题,我要说的是看一看 WDP (Web Deployment Projects )

WDP 是一个 Visual Studio Add-In 工具,用来执行 aspnet_compiler 和合并的工具。使用它可以自动化处理设置正确的 ToolPath 路径,并且将发布和打包的 ASP.NET MVC2 的网站应用程序输出到一个相邻的文件夹,使你在发布之后不会得到创建错误,如果需要的话,它还提供了众多的配置选项供你选择,即使直接使用它,在不需要修改项目文件的情况下,也是一个理想的创建 ASP.NET MVC2 程序的解决方案。

如果你感兴趣的话,这是工具的链接,已经发布了 RTW, 注意,不是 RTM, 就是 RTW, Release To Web !

http://www.microsoft.com/downloads/details.aspx?FamilyID=89f2c4f5-5d3a-49b6-bcad-f776c6edfa63&displaylang=en

 

关于这个工具的使用,可以到这里学习:http://blogs.msdn.com/b/webdevtools/archive/2010/04/14/visual-studio-2010-web-deployment-projects-beta-avail-now.aspx

 

这篇文件的原文由  Joe Cartano 发表在:http://blogs.msdn.com/b/webdevtools/archive/2010/05/14/the-aspnet-compiler-build-task-in-visual-studio-2010-asp-net-mvc-2-projects.aspx