【问题标题】:Is there a compile on demand option for an ASP.NET Web Project (C#)?ASP.NET Web 项目 (C#) 是否有按需编译选项?
【发布时间】:2012-04-19 07:54:35
【问题描述】:

我刚开始使用已从 VB.NET 网站转换为 C# Web 项目的 ASP.NET 应用程序,我发现使用 C# 的开发时间比 VB.NET 长得多。

当我在 C# 代码隐藏文件中编辑简单的代码行时,我必须手动重新编译整个站点才能看到更改的结果。在网站中,我可以编辑代码隐藏文件,然后在浏览器中执行它以查看更改的结果,而无需进行编译(或者,右键单击并选择编译页面)。

我的问题是,是否有一个选项可以只编译一页?如果没有,是否可以做一些事情(除了获得更多硬件或将项目转换回网站)来加快开发/调试过程?

澄清

在 ASP.NET (VB) 网站项目中,我可以在代码隐藏中进行编辑,单击保存按钮,然后打开浏览器并导航到页面以立即查看更改(或至少在 5秒)。在 ASP.NET (C#) 的 Web 应用程序项目中,我发现我必须编译整个网站才能在浏览器中查看实时更改(这个过程需要 2 分钟以上)。

【问题讨论】:

  • 我想知道这是 ASP.NET 网站和 Web 应用程序项目之间的区别吗?
  • @abatishchev 这使它成为一个与语言无关的问题,因此该问题需要重新表述。
  • @tomfanning:当然,这是一个一般的 .NET/ASP.NET 问题,只需要得到 OP 的说明
  • VB.NET - 我更新了我的问题。
  • @tomfanning:请发布旅游建议作为答案。

标签: c# asp.net compiler-construction web-project


【解决方案1】:

您的 .aspx 和 .ascx 应该通过 CodeFile 而不是 CodeBehind 引用它们的代码隐藏文件。然后代码隐藏将按需编译。

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeFile="myPage.aspx.cs" Inherits="myPage" %>

而不是

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeBehind="myPage.aspx.cs" Inherits="myPage" %>

虽然有一些缺点:

  • CodeBehind 页面不能使用 CodeFile 控件(但 codefile 页面可以使用任何类型的控件)
  • 引用代码文件控件有点复杂
  • 您将失去与 .designer.cs 的同步,并且必须重新切换到代码隐藏一秒钟才能重新同步。

从长远来看,CodeFile 将为您节省大量时间。

【讨论】:

  • 我想你是wrong。您可以在 WebApp 中使用 CodeBehind,在 WebSite 中使用 CodeFile。还有can't mix that.
  • @abatishchev 我确信我在 Web 应用程序方面是正确的,因为我每天都在混合 CodeFile 和 CodeBehind 的项目上工作。我刚刚在使用 vs2010 创建的全新 ASP.NET Web 应用程序上对其进行了测试,该应用程序运行在 IIS 7.5 上,将默认页面的代码隐藏更改为代码文件。它就像一个魅力。
【解决方案2】:

您可以随时按Ctrl + Shift + B 构建您的解决方案。

右键单击并Exclude您不想包含的任何项目/文件夹/文件。

编辑:Web 应用程序项目必须完整构建,但 Visual Studio 仅构建那些已更改的文件,因此这对您来说应该不会太慢。

在 Web Site 项目中,Visual Studio 默认在您运行或调试任何页面时完全编译网站项目 - 但是 - 您可以更改构建项目选项以仅在运行或调试时编译当前页面。

【讨论】:

  • 当您说排除时​​,您的意思是从项目中排除文件吗?
  • 当我发布这个问题时,我没有意识到该项目除了被转换为C#之外,还被转换为Web项目。我重新表述了这个问题。您提到必须完全编译 Web 项目 - 有什么办法解决这个问题吗?
  • @NightOwl888 我不知道(但这并不是说没有)。我能做的最好的就是把你指向MSDN
猜你喜欢
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多