有时,当我编辑页面或控件时,.designer文件随着我在页面上添加的新控件而停止更新。我不确定是什么原因导致这种情况发生,但我想知道是否有任何方法强制Visual Studio重新生成.designer文件。我使用Visual Studio 2008

编辑:对不起,我应该注意到我已经试过了:

关闭和重新打开所有文件和Visual Studio 更改页面上的runat="server"控件 删除并重新添加页面指令


当前回答

如果你运行的是Visual Studio 2013或2012,这里的大多数解决方案都不起作用。微软可能引入了一些优化,使IDE更敏捷,因此他们减少了触发代码生成器的情况。以下场景过去已经不再有效:

删除aspx或ascx文件——不再检查这种情况 剪切所有内容并重放到aspx或ascx文件中——不再工作,引用没有改变 转换为Web应用程序-选项不再可用 任意更改aspx/ascx文件的内容—不再工作(见2)。

解决方案出人意料地简单,但有点麻烦。为了触发代码生成器,更改一些需要生成designer.aspx.cs的内容。更改不影响代码的内容(如CSS样式或添加文本)不会触发代码生成器。必须更改引用控件。以下是如何做到这一点:

在ascx或aspx中更改控件的ID

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl="~/Default.aspx" Text="Home" />

to

<asp:HyperLink ID="theLINK" runat="server" NavigateUrl="~/Default.aspx" CssClass="tab" Text="Home" />

转到ascx.cs或aspx.cs,确保将所有对“MyLink”的引用重命名为“theLINK”。保存并建立,你应该很好。

其他回答

只是在这里添加一个长长的答案列表-我刚刚在VS2010 (SP1)的.aspx文件中遇到了这个问题。我尝试添加和删除标准ASP控件(这在过去是有效的),但最终,我不得不从现有控件中删除runat=server行(并保存),以强制设计器文件重新生成。

在设计视图中,右键单击屏幕并点击刷新。

在Visual Studio 2019中,步骤如下:

创建webform1.aspx 复制你的aspx代码并粘贴到webform1.aspx 编译你的项目,你应该在webform1.aspx.designer.cs中有设计器代码 现在你可以复制设计器代码并在你的原始web表单中使用。

TL,博士; 编辑ASPX页面的@Page指令的Inherits属性并点击保存。您的设计器文件应该重新生成。

确保Inherits = <命名空间>。<class_name> and CodeBehind = <class_name>.aspx.cs


我试图在一个Sharepoint 2010项目上做到这一点,使用VS 2010和TFS,上面的解决方案都不适合我。首先,在VS 2010中使用TFS时,. aspx文件的右键菜单中没有“转换为Web应用程序”选项。

这个回答终于起了作用。我的班级是这样的:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

我的@Page指令是(为了清楚起见,这里换行):

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

我首先将Inherits更改为MyProjects.Finance。Pages,点击保存,然后改回myprojects。finance。Pages。financessubmit,再点击保存。和要人!重新生成设计器页面!

希望这对使用TFS的人有帮助!

我已经找到了一种方法来解决这个问题,不需要更改任何代码或运行命令,如“转换为Web应用程序”-而且它也很简单!

我发现重新启动Visual Studio通常可以解决问题,但有时不能。在这些情况下,如果你关闭Visual Studio,然后在再次打开之前删除web项目“obj”目录中的所有内容,这对我来说总是有效的。

(当再次启动时,你只需要添加一个空格,然后再次删除它,然后点击保存,让设计器文件正确地重新生成)