有时,当我编辑页面或控件时,.designer文件随着我在页面上添加的新控件而停止更新。我不确定是什么原因导致这种情况发生,但我想知道是否有任何方法强制Visual Studio重新生成.designer文件。我使用Visual Studio 2008
编辑:对不起,我应该注意到我已经试过了:
关闭和重新打开所有文件和Visual Studio 更改页面上的runat="server"控件 删除并重新添加页面指令
有时,当我编辑页面或控件时,.designer文件随着我在页面上添加的新控件而停止更新。我不确定是什么原因导致这种情况发生,但我想知道是否有任何方法强制Visual Studio重新生成.designer文件。我使用Visual Studio 2008
编辑:对不起,我应该注意到我已经试过了:
关闭和重新打开所有文件和Visual Studio 更改页面上的runat="server"控件 删除并重新添加页面指令
当前回答
我知道我来晚了,但我想,如果在尝试了@Glenn Slaven的公认答案和@Espo目前评分最高的答案后,你仍然不走运,下面的答案可能会为一些人省去一些麻烦。
用户控件(.ascx)总是停止自动生成。我发现在我的用户控件中使用其他用户控件的实例中,它破坏了自动生成。
我提出的解决方案是使用我们都知道的技巧,当使用来自外部源的CSS类时,让智能感知在用户控件或皮肤文件中工作。现在我不只是引用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 %>
之后,保存文件,这将提示自动生成程序重新生成,然后我就重新启动并运行了。
其他回答
(以下是使用VS2005的经验。)
如果在调试时编辑ASPX页面,则后台代码不会随新类一起更新。因此,您必须停止调试,简单地编辑ASPX页面(如添加按钮或其他内容),然后单击Design View,然后删除按钮。然后,应该更新设计器文件。
如果你在VS2008中有不同的问题,那么我帮不了你。
在设计器文件中选择-all并删除文件中的所有内容,将其保留为空白,然后保存 在ASPX/ASCX文件中选择-all,然后剪切所有内容,然后重新粘贴回来 设计器文件应该已经重新生成了代码
对我来说有效的解决方案是:
我只是复制页面,并将其粘贴在相同的部分,然后重命名第一页(任何名称),并将复制的页面重命名为原始页面。现在可以访问控件了。
多年来,我在Visual Studio 2008中工作时遇到了同样的问题。我在StackOverflow和许多博客上尝试了所有的“解决方案”,我相信你们也都尝试过。有时有效,有时无效,就像我相信你们都遇到过的那样。显然,这在VS2010和VS2012中仍然是一个问题。
最后,几个月前,我决定受够了,在几周的时间里,我构建了一个名为“Redesigner”的工具,它可以生成.designer文件。它在BSD许可下是开源的,源代码可以在SourceForge上获得——可以免费使用,可以免费窃取,可以自由地做任何你喜欢的事情。而且它做了Visual Studio经常做不到的事情,即快速可靠地生成.designer文件。
它是一个独立的命令行工具,可以解析.aspx和.ascx文件,执行所有必要的反射魔法,并输出正确的.designer文件。它自己完成所有解析和反射,以避免依赖现有代码,我们都知道现有代码是坏的。它是在。net 3.5下用c#编写的,但是它甚至要避免使用System。除了类型声明之外,它完全不使用或依赖于Visual Studio。
Redesigner可以生成新的.designer文件;并且它提供了一个——verbose选项,这样当事情出错时,你会得到比“Exception of type System”更好的错误消息。抛出了异常。”还有一个——verify选项,可以用来告诉你什么时候你现有的.designer文件被破坏了——缺少控件,错误的属性声明,Visual Studio无法读取,或者只是简单的borked。
在上个月的大部分时间里,我们一直在我的工作场所使用它来摆脱困境,虽然Redesigner仍然是一个测试版本,但它已经走得足够远了,值得与公众分享它的存在。我打算很快为它创建一个Visual Studio插件,这样你就可以简单地右键单击来验证或重新生成设计器文件,就像你一直希望的那样。但是在此期间,命令行使用非常简单,将为您省去许多令人头痛的事情。
不管怎样,现在就去下载一份Redesigner,别再揪你的头发了。你不会总是需要它,但当你需要它时,你会为拥有它而感到高兴!
https://sourceforge.net/projects/redesigner/
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的人有帮助!