当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何强制VisualStudio重新生成aspx/ascx文件的.designer文件?》经验,为你挑选了11个好方法。

有时当我正在编辑页面或控制时,.designer文件停止使用我正在页面上放置的新控件进行更新.我不确定是什么导致这种情况发生,但我想知道是否有任何方法迫使Visual Studio重新生成.designer文件.我正在使用Visual Studio 2008

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

关闭并重新打开所有文件和Visual Studio

在页面上更改runat ="server"控件

删除并重新添加页面指令

Espo.. 364

如果打开.aspx文件并在设计视图和html视图之间切换,则会提示VS检查控件并将任何缺少的内容添加到设计器文件中.

在VS2013-15中," 项目"菜单下有" 转换为Web应用程序"命令.在VS2013之前,此选项在右侧单击上下文菜单中可用作(c/p)x文件.完成后,您应该会看到现在有一​​个*.Designer.cs文件,并且您可以使用Design HTML中的控件进行控制.

PS:这不应该在调试模式下完成,因为在调试时不会"重新编译"所有内容.

有些人还通过删除.designer.cs文件然后重新创建一个具有相同名称的空文件来报告成功.



1> Espo..:

如果打开.aspx文件并在设计视图和html视图之间切换,则会提示VS检查控件并将任何缺少的内容添加到设计器文件中.

在VS2013-15中," 项目"菜单下有" 转换为Web应用程序"命令.在VS2013之前,此选项在右侧单击上下文菜单中可用作(c/p)x文件.完成后,您应该会看到现在有一​​个*.Designer.cs文件,并且您可以使用Design HTML中的控件进行控制.

PS:这不应该在调试模式下完成,因为在调试时不会"重新编译"所有内容.

有些人还通过删除.designer.cs文件然后重新创建一个具有相同名称的空文件来报告成功.


VS2013在"项目"菜单下具有"转换为Web应用程序".不再在上下文菜单中.
我发现从调试模式更改为发布模式为我挖掘技巧,谢谢
要显示"转换为Web应用程序",首先需要删除Designer.cs文件,右键单击解决方案资源管理器中的aspx文件并选择删除.这在VS 2010中对我有用.
只是想说我有同样的错误并尝试了这个页面上的所有内容,没有任何工作.原来我在runat ="server"的div上错过了一个">"关闭标记.运行VS-2008.

2> Glenn Slaven..:

好吧,我找到了一个有效的解决方案,但我并不喜欢它.我不得不删除.designer.cs文件,然后重新创建一个具有相同名称的空文件.当我重新进入并再次保存aspx文件时,重新生成了设计器文件.

狡猾的!


如果你有一个视图编译错误,它将不会回来.通常这就是为什么它首先停止regening.你需要打开视图编译才能看到它,这不是直截了当的.
这对我有用.我确保删除原始文件,创建一个具有相同名称的新designer.cs文件,关闭新文件,稍微修改.as(p/c)x文件以强制保存,然后一切都很好.
这对我也有用.不理想.不知道原始desginer文件为什么停止正确更新.
这不适合我.现在我有一个空文件,后面的所有代码都不起作用!重新启动...

3> Ruvan Fernan..:

我使用以下每次都有效的方法:

在aspx/ascx文件的编辑器中选择所有前面代码(html标记等).

切.

保存.

糊.

保存.

重新编译.



(html标记等).

4> 小智..:

我最近看到我遇到了同样的问题.Visual Studio 2010拒绝更新设计器文件.

事实证明,VS不会修改使用CodeFile(运行页面)而不是CodeBehind(DLL)的页面的设计器文件.无论您关闭VS多少次,重新加载项目,重新创建控件或修改文件,都是如此.什么都不会促使VS重新设计设计师.就好像它没有为CodeFile页面创建设计器文件,但确实需要它在那里.

我将其更改为CodeBehind并保存页面.设计器文件立即更新.然后我就把它改回来了,一切都还是金色的.这种行为似乎是VS 2010/.NET 4.0的新特性,因为VS 2008默认情况下不会受此影响.

这是这部分:

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

将CodeFile更改为CodeBehind,保存,然后还原.



5> y0mbo..:

还有另一种可能性:.aspx文件中可能存在错误,该错误不允许Visual Studio重新生成设计器.

如果切换到"设计视图",则会将控件显示为无法呈现.修复控件(在我的情况下,它是属性中的额外引用)并重新编译应重新生成设计器.



6> ATL_DEV..:

如果您运行的是Visual Studio 2013,可能还有2012年,那么大多数解决方案都不起作用.Microsoft可能会引入一些优化来使IDE变得更加快速,因此它们减少了触发代码生成器的案例数量.过去工作的以下方案不再适用:

    删除aspx或ascx文件 - 不再检查此情况

    剪切所有内容并重新编写到aspx或ascx文件中 - 不再有效,参考文献没有变化

    转换为Web应用程序 - 选项不再可用

    任意更改aspx/ascx文件中的内容 - 不再有效(参见2).

解决方案非常简单,但有点麻烦.为了触发代码生成器,请更改需要生成designer.aspx.cs的内容.更改不影响代码的内容(例如CSS样式或添加文本)将不会触发代码生成器.您必须更改引用的控件.这是怎么做的:

在ascx或aspx中更改控件的ID



转到ascx.cs或aspx.cs并确保将所有对"MyLink"的引用重命名为"theLINK".保存并做好构建,你应该好好去.


3.如果选择了适当的文件,则"PROJECT"菜单中将显示"转换为Web应用程序".
嗯.不幸的是,如果它已经是一个Web应用程序,则此选项不可用.

7> DevelopingCh..:

我知道的唯一方法是删除设计器文件,然后转换为Web应用程序.但是当你这样做时,它通常会弹出错误,为什么它首先不会自动重新生成,它通常是一个未在页面头部声明的控件引用.



8> 小智..:

转换为Web应用程序对我不起作用.

删除designer.cs并粘贴一个空白的designer.cs也不起作用.

但是这是有效的:

    全选(Default.aspx)

    保存Default.aspx

    保存Default.aspx

完成.生成了新的designer.cs.:)



9> Overflew..:

我经常发现复制/粘贴给我带来了这种行为.大多数情况可以通过编辑服务器控件的ID来解决(只需添加一个字符,然后删除它).

还要记住,在设计器文件中看不到像Repeater这样的内容.

是的,有些情况下您需要执行上面列出的删除文件魔法 - 但名称更改解决方案大部分时间都可以使用.


那是我多次犯的那种错误.如果将HTML从一个页面复制到另一个页面并使用runat ="server"控件,则将重命名控件以避免冲突.但是,如果您在"html comment"标签中粘贴,则不会更改控件ID,并且任何冲突都将停止重新生成设计器文件,因为有两个具有相同ID的控件.这是因为还创建了html"comments"标签内的控件.;)

10> Johan Leino..:

我的经验是,如果你想在做类似这样的文章,如上述。

您的标记文件(aspx / ascx)必须包含CodeBehind =“ MyPage.aspx.cs”属性,否则它将不起作用。我在这里写了博客。


+1已为我修复。我的页面缺少此属性

11> 小智..:

我找到了一种解决这个问题的方法,无需更改任何代码或运行"转换为Web应用程序"等命令 - 而且它也很简单!

我发现重新启动Visual Studio通常可以解决问题,但有时却没有.在这些情况下,如果您关闭Visual Studio,然后再次打开它之前删除Web项目的"obj"目录中的所有内容,它始终对我有用.

(再次启动时,只需添加一个空格并再次将其删除,然后单击"保存"以正确重新生成设计器文件)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有