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

Ric*_*ich 15 c# asp.net code-behind

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

上下文:一位从此离开的同事,将一个带有.cs代码隐藏的网站部署到共享服务器.我对.cs文件进行了一些小改动,我应该在其中一个页面上反映但尚未出现.我已经重新启动了应用程序池,但是我不愿重置服务器上的IIS,因为有很多其他团队的应用程序可能在同一台服务器上使用.

the*_*man 34

这适用于Web Application项目,而不是Web Site项目,CodeFile默认情况下,不允许更改构建操作...

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

代码隐藏

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

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

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

的CodeFile

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

关键优势

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

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

  • 您的.aspx文件中的页面指令具有CodeFile="your.aspx.cs"
  • 的的性能.cs在Solution Explorer中的文件有一个build-actioncontent
  • 的的性能.designer.cs在Solution Explorer中的文件有一个build-actionnone.

笔记

  • 当使用CodeFile设置页面时,Intellisense不喜欢工作(您可以在编码时更改为CodeBehind,然后更改为部署).
  • 如果从CodeBehind更改为CodeFile,则始终执行重建并重新部署(反之亦然).这是因为当页面是CodeBehind时,它.cs被编译到.dllbin文件夹中,并在您更改为CodeFile时保留在那里.该的CodeFile将在即时编译,您将获得的定义相同的代码/班.dll ,并在上即时编译的代码,这将导致运行错误.