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

asp.net visual-studio visual-studio-2008

295833 观看

30回复

23504 作者的声誉

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

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

  • 关闭并重新打开所有文件和Visual Studio
  • 在页面上更改runat =“server”控件
  • 删除并重新添加页面指令
作者: Glenn Slaven 的来源 发布者: 2008 年 9 月 5 日

回应 (30)


363

34877 作者的声誉

决定

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

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

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

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

作者: Espo 发布者: 05.09.2008 06:25

4

13509 作者的声誉

(以下来自VS2005的经验。)

如果在调试时编辑ASPX页面,则不会使用新类更新代码隐藏。因此,您必须停止调试,轻松编辑ASPX页面(如添加按钮或其他内容),然后单击“设计视图”,然后删除按钮。然后,您的设计器文件应该更新。

如果你对VS2008有不同的问题,那么我无能为力。

作者: EndangeredMassa 发布者: 05.09.2008 06:26

89

23504 作者的声誉

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

狡猾的!

作者: Glenn Slaven 发布者: 05.09.2008 06:32

14

21087 作者的声誉

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

作者: DevelopingChris 发布者: 09.09.2008 02:28

37

3042 作者的声誉

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

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

作者: y0mbo 发布者: 06.10.2008 10:05

2

86310 作者的声誉

  • 在设计器文件中选择全部并删除文件中的所有内容,将其留空然后保存
  • 在ASPX / ASCX文件中选择全部并剪切所有内容,然后重新粘贴它
  • 设计器文件应该重新生成代码
作者: Mark Cidade 发布者: 06.10.2008 10:09

77

145 作者的声誉

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

  • 在aspx / ascx文件的编辑器中选择所有前面代码(html标记等)。
  • 切。
  • 保存。
  • 糊。
  • 保存。

重新编译。

作者: Ruvan Fernando 发布者: 29.01.2009 04:19

1

0 作者的声誉

删除designer.cs文件,然后右键单击.aspx文件并选择“转换为Web应用程序”。如果您的控件声明存在问题,例如标签格式不正确,您将收到错误消息,并且您需要在Visual Studio成功重新生成设计器文件之前纠正格式错误的标记。

就我而言,在这一点上,我发现问题是我已经声明了一个按钮控件,它不在带有runat =“server”属性的表单标签内。

作者: Max Lancaster 发布者: 10.02.2009 07:37

5

3120 作者的声誉

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

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

作者: Johan Leino 发布者: 26.03.2009 08:08

6

5257 作者的声誉

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

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

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

作者: Overflew 发布者: 11.05.2009 02:57

2

767 作者的声誉

这是我经验丰富的,请在解决方案资源管理器中右键单击选择网站文件夹,为所有aspx文件选择转换为Web应用程序,将生成设计器文件。

萨米尔

作者: sameer 发布者: 15.01.2010 07:30

0

1 作者的声誉

  1. 用无效的标记名称替换自定义标记。保存
  2. 将无效标记名称还原为自定义标记名称。保存。然后,系统将提示您签出* .designer.cs文件(或者静默修改designer.cs)并生成自定义标记控件的正确变量。
作者: osexp2000 发布者: 29.01.2010 07:13

1

11 作者的声誉

这是IDE中的错误; 我从VS 2003开始就看过了。虽然这个解决方案很简单。

保存文件。完全退出IDE(确保进程停止,任务mgr。)

重新打开解决方案,弄脏标记,保存。固定。

作者: bcweis 发布者: 30.04.2010 06:25

1

11 作者的声誉

我有两个问题......过时的AJAXControlkit - 删除旧的dll,从工具箱中删除旧控件,下载新版本,加载工具箱,以及在页面上拖放新控件(请参阅http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html

我的标签控件中也有拼写错误(使用'class'而不是'cssclass')。

作者: user381377 发布者: 08.07.2010 04:55

4

11 作者的声誉

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

作者: yertle 发布者: 14.09.2010 06:08

60

91 作者的声誉

我最近看到我遇到了同样的问题。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,保存,然后还原。

作者: Geoff 发布者: 22.01.2011 08:18

1

11 作者的声誉

如果您像我一样,并将旧的.ASPX文件添加到更新的项目中。您可能会忘记页面上使用的一些控件。

如果是这样,首先,如果您正在安装多个文件; 首先修复一个。

编译时,修复生成的错误。它们可能在所有文件中都是相同的错误。

接下来,如果您有Designer文件,请删除所有插入的设计器文件。接下来,确保编译时没有任何其他错误,而不是设计器文件。

最后右键单击您的Web项目,然后单击“转换为Web应用程序”。这将插入您需要的设计器文件。

这些是解决问题的绝对最佳步骤。

作者: Carlo 发布者: 02.06.2011 02:46

1

360 作者的声誉

没有人提到的一件事是访问该页面。我让我的设计器文件停止重新生成,因为我包含了一个不存在的用户控件(由于各种原因),并且这里没有提到任何建议。无论出于何种原因,我没有在Visual Studio中出现任何错误 - 除了抱怨我的客户端控件不存在因为它们没有被重新生成的事实。

实际访问该页面让ASP.Net告诉我错误。

作者: Tacroy 发布者: 17.05.2012 11:11

1

1 作者的声誉

对我有用的解决方案是:

我只是复制了页面并将其粘贴在同一部分中,然后重命名了第一页(任何名称)并将复制的页面重命名为原始页面。现在控件可以访问。

作者: you y 发布者: 21.05.2012 10:18

2

1396 作者的声誉

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

作者: Rory Solley 发布者: 28.06.2012 01:44

1

1 作者的声誉

如果更新命名空间并且不更新设计器文件中的命名空间,也会发生这种情况。修复:也更新设计器文件中的命名空间。

作者: Ben Weeks 发布者: 13.07.2012 08:51

2

2804 作者的声誉

我在Visual Studio 2008中工作多年来遇到了同样的问题。我在StackOverflow和几十个博客上尝试过每一个“解决方案”,就像我相信你们所有人一样。有时他们会工作,有时候他们不工作,就像我确信你们所有人都遇到过的那样。显然它仍然是VS2010和VS2012中的一个问题。

最后,几个月前,我决定足够了,几个星期后我建立了一个名为“Redesigner”的工具来生成.designer文件。它是BSD许可下的开源软件,SourceForge上提供源代码 - 免费使用,免费窃取,随意做任何事情。而它确实经常出现Visual Studio无法做到的事情,即快速可靠地生成.designer文件。

它是一个独立的命令行工具,可解析.aspx和.ascx文件,执行所有必要的反射魔法,并吐出正确的.designer文件。它完成了所有的解析和反射,以避免依赖现有的代码,我们都知道这些代码已被破坏。它是用C#编写的,针对.NET 3.5,但是除了类型声明之外,甚至可以避免使用System.Web,并且根本不使用或依赖Visual Studio

Redesigner可以生成新的.designer文件; 并且它提供了一个--verbose选项,这样当出现问题时,你会获得比“类型System.Exception抛出异常”更好的错误消息。并且有一个--verify选项可用于告诉您何时现有的.designer文件被破坏 - 缺少控件,错误的属性声明,Visual Studio无法读取,或者只是简单的borked。

我们一直在我的工作场所使用它来让我们在上个月的大部分时间里让我们摆脱僵局,虽然Redesigner仍然是测试版,但它已经足够远,因此值得与公众分享它的存在。我很快打算为它创建一个Visual Studio插件,这样您只需右键单击即可按照您希望的方式验证或重新生成设计器文件。但在此期间,命令行使用非常简单,可以为您节省很多麻烦。

无论如何,现在下载一份Redesigner并停止拔出你的头发。你并不总是需要它,但当你这样做时,你会很高兴你拥有它!

https://sourceforge.net/projects/redesigner/

作者: Sean Werkema 发布者: 21.01.2013 06:23

5

158 作者的声誉

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

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

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

作者: tommycode 发布者: 01.02.2013 09:21

3

2204 作者的声誉

另一件有用的事情是 -

  1. 手动删除然后在文件系统中创建设计器文件。
  2. 编辑项目文件。
  3. 添加代码以包含设计器
    Eg:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. 重新加载项目
  5. 在设计/查看模式下打开(c / p)x文件并保存。
  6. 检查设计器文件。代码将在那里。
作者: Vandesh 发布者: 12.11.2013 05:17

21

1798 作者的声誉

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

  1. 删除aspx或ascx文件 - 不再检查此情况
  2. 剪切所有内容并重新编写到aspx或ascx文件中 - 不再有效,参考文献没有变化
  3. 转换为Web应用程序 - 选项不再可用
  4. 任意更改aspx / ascx文件中的内容 - 不再有效(参见2)。

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

在ascx或aspx中更改控件的ID

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

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

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

作者: ATL_DEV 发布者: 29.01.2014 11:36

9

6 作者的声誉

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

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

但是这是有效的:

  1. 全选(Default.aspx)
  2. 保存Default.aspx
  3. 保存Default.aspx

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

作者: O D 发布者: 14.02.2014 09:23

2

11560 作者的声誉

TL; DR;
编辑InheritsASPX页面@Page指令的属性,然后单击“保存”。您的设计器文件应该重新生成。

确保Inherits= CodeBehind= .aspx.cs


我试图在使用VS 2010和TFSSharepoint 2010项目上执行此操作,并且上述解决方案都不适用于我。主要是,在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" %>

我首先将其更改InheritsMyProjects.Finance.Pages,点击Save,然后将其更改回MyProjects.Finance.Pages.FinanceSubmission并再次点击Save。和瓦拉!设计师页面重新生成!

希望这有助于使用TFS的人!

作者: SNag 发布者: 19.12.2014 02:58

3

3130 作者的声誉

如果您使用的是VS2013或更高版本,请确保使用属性“CodeBehind”引用的代码而不是“CodeFile”,然后执行以下步骤

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • 创建空的设计器页面(如果它已经存在则清除它“yourControl.ascx.designer.cs”)
  • 在ascx(或aspx)中复制所有代码,删除它,然后保存。再次重新过去,然后保存。
  • 应该现在填充设计器文件。
作者: Tarek El-Mallah 发布者: 11.02.2015 06:56

2

365 作者的声誉

在Visual Studio中:

1)删除您的aspx.designer.cs文件

2)右键单击您的aspx文件并选择“转换为Web应用程序”这应该添加aspx.designer.cs并更新。

如果您收到错误消息:

“设计器文件的生成失败:未实现方法或操作。”

尝试关闭Visual Studio,然后重新打开项目并再次执行第二步

如何在visual studio中生成aspx.designer.cs?

作者: nouman arshad 发布者: 17.04.2015 06:43

1

40 作者的声誉

在解决方案资源管理器中右键单击并选择转换为Web应用程序。它将再次生成所有设计器文件。

作者: user3911976 发布者: 17.03.2016 08:48
32x32