gpt4 book ai didi

c# - 在带有代码隐藏的 ASP.NET 网站中,.cs 文件在什么时候编译?

转载 作者:可可西里 更新时间:2023-11-01 03:14:07 25 4
gpt4 key购买 nike

简而言之:在带有代码隐藏的 ASP.net 网站中,*.cs 文件在什么时候编译?

上下文:一位已经离职的同事将一个带有 .cs 代码隐藏的网站部署到共享服务器。我对 .cs 文件做了一个小改动,我希望它能反射(reflect)在其中一个页面上,但它还没有出现。我已经重新启动了应用程序池,但是我不愿意在服务器上重置 IIS,因为有几个其他团队的应用程序可能正在同一台服务器上使用。

最佳答案

这适用于 Web Application 项目而不是 Web Site 项目,后者默认为 CodeFile,并且不允许更改构建操作...

在 ASP.NET Web 应用程序 中,您有两种部署页面的方法; CodeFileCodeBehind。默认情况下,页面将始终使用 CodeBehind,但您可以更改它。

代码隐藏

CodeBehind 在编译/构建时将您的 .cs 文件编译成 bin 文件夹中的 .dll 文件,然后将其部署到您的 Web 服务器。无需将 .cs 文件部署到您的 Web 服务器。如果您这样做,它将只是坐在那里未被使用。

要使用 CodeBehind 配置页面,请确保:

  • .aspx 文件中的页面指令有 CodeBehind="your.aspx.cs"
  • 解决方案资源管理器中 .cs.designer.cs 文件的属性具有 build-action compile

代码文件

这会导致 ASP.NET 在服务器 上即时编译 .cs 文件。这意味着您的 .cs 文件需要部署到 Web 服务器。这也意味着您的 .cs 文件不会在编译/构建时编译,因此不会内置到 bin 文件夹中的 .dll 中.

主要优势

使用 CodeFile,您可以更改 .cs 文件并部署仅该文件,以在您的生产 Web 服务器上查看更改。无需重新部署。无需回收应用程序池。这在很多情况下都非常有用。

要使用 CodeFile 配置页面,请确保满足以下所有条件:

  • .aspx 文件中的页面指令有 CodeFile="your.aspx.cs"
  • 解决方案资源管理器中 .cs 文件的属性具有 contentbuild-action
  • 解决方案资源管理器中 .designer.cs 文件的属性具有 nonebuild-action

注意事项

  • Intellisense 不喜欢在页面设置时工作CodeFile(不过,您可以在编码时更改为 CodeBehind,然后再更改回部署)。
  • 如果您从 CodeBehind 更改为 CodeFile,则总是做一个重建和重新部署(反之亦然)。这是因为当页面是CodeBehind时,.cs被编译成bin文件夹下的.dll,将当您更改为 CodeFile 时保留在那里。代码文件将是即时编译,您将获得中定义的相同代码/类动态编译代码中的 .dll ,这将导致运行时错误。

关于c# - 在带有代码隐藏的 ASP.NET 网站中,.cs 文件在什么时候编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21134583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com