如何强制Visual Studio重新生成aspx/ascx文件的.designer文件?

430
有时,当我编辑页面或控件时,.designer文件停止更新新加入的控件信息。我不确定是何原因导致此问题发生,但我想知道是否有任何方法可以强制Visual Studio重新生成.designer文件。我正在使用Visual Studio 2008。
编辑:抱歉,我应该指出我已经尝试过:
关闭和重新打开所有文件和Visual Studio 对页面上的runat="server"控件进行更改 删除并重新添加页面指令

62
2012年了,Visual Studio居然还没有一个从源文件重新生成设计器文件的上下文菜单项,这难道不荒谬吗?这就像不能重新构建损坏的DLL一样。我不理解...特别是在使用外部源代码控制和编辑器时,你会发现Visual Studio非常无力。如果你问我的话,这就是浪费金钱。我正在尝试重新生成资源文件设计器,虽然我设法实现了它的重新生成,但这只是通过一些不为人知的方法...啊!!!1 - bambams
4
如果我能从每个像这样的奇怪“功能”中获得一分钱,我比比尔·盖茨还要富有。如果你认为这还不够坏,请看看Outlook Express存储其邮件数据的位置。它深藏在用户文件夹中一个神秘的文件夹名称下面,默认情况下被隐藏。 - ATL_DEV
15
有没有针对VS 2015的解决方案? - Anton
3
不是永久性的解决方案,但这可以恢复.cs文件中的控件引用:1. 打开相关的.aspx文件;2. 删除<%@ Page指令行末尾的单个">";3. 等待一两秒钟;4. 把">"放回去。5. 切换到.cs文件,你会发现它现在没有控件引用错误了。我已经这样做很长时间了,在每个VS版本中都有效。 - ingredient_15939
1
@ingredient_15939,VS2019和你的评论对我很有帮助。非常感谢! - abhi
显示剩余2条评论
49个回答

1
这也可能发生在您更新命名空间但未在设计文件中更新命名空间的情况下。解决方法:也要在设计文件中更新命名空间。

1
我的解决方案是将.csproj文件中的None更改为Compile
<Compile Include="Logout.aspx.designer.cs">
      <DependentUpon>Logout.aspx</DependentUpon>
</Compile>

0

我知道我来晚了,但是如果你在尝试了@Glenn Slaven的被接受答案和@Espo当前最高评分答案后仍然没有运气,那么以下内容可能会为一些人节省一些麻烦。

用户控件(.ascx)经常阻止自动生成。我发现,在我的用户控件中使用其他用户控件时,它会破坏自动生成。

我想出的解决方案是使用我们所有人都知道的技巧,在使用来自外部源的CSS类时使IntelliSense在用户控件或皮肤文件中工作。现在,我不仅引用CSS文件,还注册我需要的其他用户控件。看起来像这样:

<% If False Then %>
<%@ Register TagPrefix="uc" TagName="Title" Src="~/controls/title.ascx" %>
<link rel="stylesheet" type="text/css" href="../css/common.css"  />
<% End If %>

之后,我保存文件,这会提示自动生成重新生成,然后我就可以继续运行了。


0

我曾经遇到过这个问题,对我来说,我的一个控件的ID值中有一个空格。我去掉了这个空格,设计文件就重新生成了。


0
除了已经给出的所有好答案,我想补充一下 @johan-leino 的好答案。在我的情况下,由于某种任意原因,在 @Page 指令/.aspx 文件中省略了 CodeBehind 属性。同样,可能值得检查 @Control 指令/.ascx 文件的 CodeFile 属性(显然在两种情况下都需要一个 Inherits 属性)。
根据需要“强制”重新生成 .designer.cs 的确切场景和原因,还可以尝试在(快速)保存之前格式化文档(可能表示解析错误),并检查警告的错误列表。

0
在我的情况下,当我在@Page部分添加了CodeBehind时,问题得到了解决。

0

我曾经遇到过这个问题,让我非常苦恼,但后来我意识到我试图从静态方法中引用控件。

将该方法改为非静态方法解决了我的问题。


0
我在使用VS 2003,这些方法都对我无效。有效的方法是在位于.vb页面顶部标记为“Web表单设计器生成代码”的部分中打开代码(其中标注不允许编辑),并在那里进行声明,系统会将其声明为所有其他控件。非常奇怪。

0
在我的情况下,我只是在顶部缺少了一个注册TagPrefix。不知何故,之前的开发人员在没有这个的情况下工作了?

0

我以前也遇到过这个问题。我通常会按下回车键添加一行,然后等待加号/减号在 HTML 页面上显示,设计师就会添加你需要的内容。我有时也不得不关闭项目并重新打开它才能让它正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接