简介: 在一个带有代码隐藏的ASP.net网站上,* .cs文件在什么时候被编译?
上下文: 此后一位同事离开,将一个带有.cs代码隐藏的网站部署到共享服务器。我对.cs文件进行了一些小改动,我应该在其中一个页面上反映但尚未出现。我已经重新启动了应用程序池,但是我不喜欢在服务器上重置IIS,因为有很多其他团队的应用程序可能在同一台服务器上使用。
答案 0 :(得分:32)
这适用于Web Application
项目,而不是Web Site
项目,默认情况下为CodeFile
,并且不允许更改构建操作...
在ASP.NET Web Applications
中,您有两种部署页面的方法; CodeFile
和CodeBehind
。默认情况下,页面将始终使用CodeBehind
,但您可以更改此内容。
CodeBehind将您的.cs文件编译到bin
文件夹的编译/构建时间的.dll文件中,然后将其部署到您的Web服务器。无需将.cs文件部署到Web服务器。如果你这样做,它将只是坐在那里未使用。
要配置具有CodeBehind的页面,请确保:
.aspx
文件中的网页指令包含CodeBehind="your.aspx.cs"
.cs
和.designer.cs
文件的属性为build-action
compile
。这会导致ASP.NET在服务器上即时编译。strong文件。这意味着您的.cs
文件需要部署到Web服务器。这也意味着您的.cs
文件不会在编译/构建时编译,因此不会内置到.dll
文件夹中的bin
。
使用CodeFile,您可以更改.cs
文件并部署该文件以查看生产Web服务器上的更改。无需重新部署。无需回收应用程序池。这在很多情况下都非常有用。
要使用CodeFile配置页面,请确保满足以下所有:
.aspx
文件中的网页指令包含CodeFile="your.aspx.cs"
.cs
文件的属性build-action
content
.designer.cs
文件的属性build-action
为none
。.cs
被编译到bin文件夹中的.dll
,并且会
当您更改为CodeFile时保持在那里。 CodeFile将是
即时编译,您将获得相同的代码/类
即将编译的代码中的.dll
和,这将导致
运行时错误。答案 1 :(得分:0)
对于我使用的设置,在构建项目时会编译.cs文件。这意味着bin中的.dll需要更改,而不是直接更改.cs文件。
.aspx文件可以随时更改,但我认为您需要重建项目才能使后面的代码生效。
我之前没有任何问题替换了单数.dll(虽然这不是好习惯)。
答案 2 :(得分:0)
显然你所做的应该是有效的。 检查是否已实施缓存。 否则,发布代码并部署dll,而不是.cs文件。我建议你在上线之前在登台服务器上进行测试。