C# 在带有代码隐藏的ASP.NET网站中,.cs文件是在什么时候编译的?
简言之: 在有代码隐藏的ASP.net网站中,*.cs文件在什么时候编译 背景:C# 在带有代码隐藏的ASP.NET网站中,.cs文件是在什么时候编译的?,c#,asp.net,code-behind,C#,Asp.net,Code Behind,简言之: 在有代码隐藏的ASP.net网站中,*.cs文件在什么时候编译 背景: 一位后来离开的同事在共享服务器上部署了一个带有.cs代码的网站。我对一个.cs文件做了一个小改动,我希望它能反映在其中一个页面上,但它还没有出现。我已经重新启动了应用程序池,但是我不愿意在服务器上重置IIS,因为有两个其他团队的应用程序可能正在同一台服务器上使用。对于我使用的设置,在构建项目时编译.cs文件。这意味着需要更改的是bin中的.dll,而不是直接更改.cs文件 aspx文件可以随时更改,但我认为您需要重
一位后来离开的同事在共享服务器上部署了一个带有.cs代码的网站。我对一个.cs文件做了一个小改动,我希望它能反映在其中一个页面上,但它还没有出现。我已经重新启动了应用程序池,但是我不愿意在服务器上重置IIS,因为有两个其他团队的应用程序可能正在同一台服务器上使用。对于我使用的设置,在构建项目时编译.cs文件。这意味着需要更改的是bin中的.dll,而不是直接更改.cs文件 aspx文件可以随时更改,但我认为您需要重新构建项目,以便代码隐藏生效 我以前替换过singular.dll,没有任何问题(尽管这不是一个好的做法)。这适用于
Web应用程序
项目,而不是网站
项目,默认情况下它们是代码文件
,不允许更改生成操作
在ASP.NETWeb应用程序中
有两种部署页面的方法<代码>代码文件和代码隐藏
。默认情况下,页面将始终使用CodeBehind
,但您可以更改此设置
代码隐藏
CodeBehind在编译/构建时将.cs文件编译到bin
文件夹中的.dll文件中,然后将其部署到web服务器。无需将.cs文件部署到web服务器。如果你这样做,它将只是坐在那里没有使用
要使用CodeBehind配置页面,请确保:
文件中的page指令具有.aspx
codebeahind=“your.aspx.cs”
- 解决方案资源管理器中
和.cs
文件的属性具有.designer.cs
编译
的
构建操作
.cs
文件需要部署到web服务器。这还意味着您的.cs
文件不会在编译/构建时编译,因此不会内置到bin
文件夹中的.dll
关键优势
使用CodeFile,您可以对.cs
文件进行更改,并仅部署该文件以查看生产web服务器上的更改。无需重新部署。无需回收应用程序池。这在很多情况下都非常有用
要使用代码文件配置页面,请确保满足以下所有条件:
文件中的page指令具有.aspx
CodeFile=“your.aspx.cs”
- 解决方案资源管理器中
文件的属性有一个.cs
的构建操作
内容
- 解决方案资源管理器中
文件的属性具有.designer.cs
的构建操作
无
- Intellisense不喜欢在页面设置为 代码文件(您可以在编码时更改为CodeBehind,然后更改回部署)
- 如果您从CodeBehind更改为CodeFile,则始终执行以下操作
重建和重新部署(反之亦然)。这是因为当页面被代码隐藏时,
已编译到bin文件夹中的.cs
,并将 当您更改为代码文件时,请保持在那里。代码文件将被删除 动态编译,您将获得在中定义的相同代码/类.dll
和动态编译的代码,这将导致 运行时错误.dll
- 显然,你所做的应该是有效的。
检查是否已实施缓存。
否则,发布代码并部署dll,而不是.cs文件。我建议在上线之前在staging server中进行测试。这是一个网站项目(文件->新建网站)还是一个Web应用程序项目(文件->新建项目)?这有很大的不同。有.csproj文件吗?我在目录中看不到.csproj文件。基于@Page标签,我假设它是一个网站:正如你从Yetiman的帖子中看到的,不幸的是你运气不好。事实上,它在页面属性中表示“Codebehind”,这表明它是一个web应用程序,而不是一个web站点。你需要重新编译这个网站。@Tobberoth事实上,这并不重要。您可以在web应用程序和网站中使用代码文件。我一直都这么做。@theyetiman是的,我自己也看到过这样的例子,所以我知道它是有效的,但是它得到官方的支持吗?当我参加公司的.NET web开发课程时,老师不知道这种可能性(这是一门由microsoft支持的证书等课程)。(作为对“是否将
codebhind=“my.aspx.cs”
足够编译成.dll
?”的回应。。。不这只是告诉ASP.NET运行时应该将其编译到.dll
,但如果不是这样,您将得到一个错误。您需要将页面指令和.cs
(和.designer.cs
)生成操作设置为编译
如何获取*.cs
的属性?我看不到这个选项,如果我点击它并切换到属性窗口,我会看到FullName和FullPath@ebramtharwat您可能正在开发网站
,而不是web应用程序
。在本例中,我认为默认情况下所有内容都是CodeFile
,您无法更改它。不过,我可能错了。在web应用程序中
可以右键单击>属性
查看构建操作。我有一个网站,它是CodeBehind@ebramtharwat对不起,我不知道怎么帮你。我刚刚检查过,如果你在VS中创建一个新的网站,它会创建代码文件页面。我个人从不使用网络