【问题标题】:How does Visual Studio process the App_Code folder specially?Visual Studio 如何专门处理 App_Code 文件夹?
【发布时间】:2013-08-28 02:41:31
【问题描述】:

当在 App_Code 文件夹中进行或检测到更改时,Visual Studio 如何处理它?不是 IIS 或 ASP.NET。

我想更好地了解为什么每当我将代码文件保存在网站项目的大型 App_Code 文件夹中时,Visual Studio 会长时间冻结。或者,我可以问:为什么 Visual Studio 在处理同样大的类库中的文件时不会出现这些相同的冻结?

理想情况下,我希望看到 Microsoft 引用的有关在 Visual Studio 中处理 App_Code 文件夹的问题的官方文档,以及与处理类库不同的情况。

【问题讨论】:

    标签: visual-studio-2012 web-site-project app-code


    【解决方案1】:

    App_Code 文件夹未明确标记为包含文件 用任何一种编程语言编写。相反,ASP.NET 推断 根据它的文件为 App_Code 文件夹调用哪个编译器 包含。如果 App_Code 文件夹包含 .vb 文件,则 ASP.NET 使用 Visual Basic 编译器;如果它包含 .cs 文件,则 ASP.NET 使用 C# 编译器等等。

    如果 App_Code 文件夹只包含程序所在的文件 语言不明确,如.wsdl文件,ASP.NET使用默认 Web 应用程序的编译器,在编译中建立 应用程序 Web.config 文件或机器级别的元素 Web.config 文件。编译器被命名为构建提供者和构建 为 extension 中的每个文件扩展名指定提供程序 元素。

    在此处查看documentation

    【讨论】:

    • 这是一个有用的答案。总而言之,App_Code 文件夹会在小的更改后以各种方式动态编译,这会导致与显式编译的项目(如类库)相比存在性能差异。
    【解决方案2】:

    它将此文件夹中的所有代码重新编译到一个单独的程序集中,然后在您的项目中引用此程序集。

    您应该知道,如果您将这些文件作为可编译文件包含在您的项目中,可能会发生双重引用。在后一种情况下,文件同时在一个单独的程序集(具有临时名称)中编译,该程序集被引用,并且也在 bin 文件夹中编译。这是恐怖表演的开始......

    【讨论】:

      【解决方案3】:

      这些关于 App_Code 文件夹的性能说明有些过时,但可能仍适用于项目类型:

      2) 尽量减少 /app_code 目录中的文件数量。如果你 最终在这个目录中有很多类文件,我会 建议您改为将单独的类库项目添加到您的 VS 解决方案并在其中移动这些类,而不是因为类 库项目的编译速度比在 /app_code 目录。如果您只是有一个,这通常不是问题 /app_code 中的文件数量很少,但如果你有很多 目录或数十个文件,您将能够获得速度 通过将这些文件移动到单独的类库中进行改进 项目,然后从您的网站引用该项目。 要注意的另一件事是,每当您从源代码切换时 在 VS HTML 设计器中设计视图,设计器导致 /app_code 目录在设计器表面加载之前编译。 这样做的原因是您可以托管其中定义的控件 /app_code 在设计器中。如果您没有 /app_code 目录, 或者只在其中定义了几个文件,页面设计器将是 能够更快地加载(因为它不需要执行大 先编译)。

      -- http://weblogs.asp.net/scottgu/archive/2006/09/22/Tip_2F00_Trick_3A00_-Optimizing-ASP.NET-2.0-Web-Project-Build-Performance-with-VS-2005.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        相关资源
        最近更新 更多