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


    当你创建了一个 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

      

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

    在你将 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

  • 相关阅读:
    Idea debug报错Command line is too long
    云计算与虚拟化入门通识
    yield from语法
    python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
    python模块中sys.argv[]使用
    SQLAlchemy中Model.query和session.query(Model)的区别
    MAN VGEXTEND
    Python---基础---dict和set
    Python---基础---元组
    Python---基础---list(列表)
  • 原文地址:https://www.cnblogs.com/haogj/p/1746737.html
Copyright © 2020-2023  润新知