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

时间:2014-01-15 10:13:45

标签: c# asp.net code-behind

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

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

3 个答案:

答案 0 :(得分:32)

这适用于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-action compile

的CodeFile

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

主要优势

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

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

  • .aspx文件中的网页指令包含CodeFile="your.aspx.cs"
  • 解决方案资源管理器中.cs文件的属性build-action content
  • 解决方案资源管理器中.designer.cs文件的属性build-actionnone

注释

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

答案 1 :(得分:0)

对于我使用的设置,在构建项目时会编译.cs文件。这意味着bin中的.dll需要更改,而不是直接更改.cs文件。

.aspx文件可以随时更改,但我认为您需要重建项目才能使后面的代码生效。

我之前没有任何问题替换了单数.dll(虽然这不是好习惯)。

答案 2 :(得分:0)

显然你所做的应该是有效的。 检查是否已实施缓存。 否则,发布代码并部署dll,而不是.cs文件。我建议你在上线之前在登台服务器上进行测试。