Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在带有代码隐藏的ASP.NET网站中,.cs文件是在什么时候编译的?_C#_Asp.net_Code Behind - Fatal编程技术网

C# 在带有代码隐藏的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文件可以随时更改,但我认为您需要重

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

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

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

aspx文件可以随时更改,但我认为您需要重新构建项目,以便代码隐藏生效

我以前替换过singular.dll,没有任何问题(尽管这不是一个好的做法)。

这适用于
Web应用程序
项目,而不是
网站
项目,默认情况下它们是
代码文件
,不允许更改生成操作

在ASP.NET
Web应用程序中
有两种部署页面的方法<代码>代码文件和
代码隐藏
。默认情况下,页面将始终使用
CodeBehind
,但您可以更改此设置

代码隐藏 CodeBehind在编译/构建时将.cs文件编译到
bin
文件夹中的.dll文件中,然后将其部署到web服务器。无需将.cs文件部署到web服务器。如果你这样做,它将只是坐在那里没有使用

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

  • .aspx
    文件中的page指令具有
    codebeahind=“your.aspx.cs”
  • 解决方案资源管理器中
    .cs
    .designer.cs
    文件的属性具有
    编译
    构建操作
代码文件 这会导致ASP.NET在服务器上动态编译.cs文件。这意味着您的
.cs
文件需要部署到web服务器。这还意味着您的
.cs
文件不会在编译/构建时编译,因此不会内置到
bin
文件夹中的
.dll

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

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

  • .aspx
    文件中的page指令具有
    CodeFile=“your.aspx.cs”
  • 解决方案资源管理器中
    .cs
    文件的属性有一个
    构建操作
    内容
  • 解决方案资源管理器中
    .designer.cs
    文件的属性具有
    构建操作
笔记
  • Intellisense不喜欢在页面设置为 代码文件(您可以在编码时更改为CodeBehind,然后更改回部署)
  • 如果您从CodeBehind更改为CodeFile,则始终执行以下操作 重建和重新部署(反之亦然)。这是因为当页面被代码隐藏时,
    .cs
    已编译到bin文件夹中的
    .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中创建一个新的网站,它会创建代码文件页面。我个人从不使用网络