有时,当我编辑页面或控件时,.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”。保存并建立,你应该很好。

其他回答

如果你运行的是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”。保存并建立,你应该很好。

我知道的唯一方法是删除设计器文件,并将其转换为web应用程序。然而,当你这样做时,它通常会弹出错误,至于为什么它没有自动再生在第一个地方,它通常是一个控制引用,没有在页面头部声明。

designer.cs关闭。 将您的aspx文件更改为设计视图。 右键单击- >刷新。 保存

除了所有已经给出的好答案,我想补充@johan-leino的好答案。在我的例子中,由于某种任意原因,CodeBehind属性从@Page指令/中被省略了。aspx文件。同样,检查CodeFile属性是否有@Control指令/也是值得的。ascx文件(显然在这两种情况下都与Inherits属性结合使用)。

根据“强制”重新生成.designer.cs所需的确切场景和原因,还可以在(快速)保存(无论是否有任何更改)之前尝试格式化文档(可能指示解析错误),并检查错误列表中的警告。

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