有时,当我编辑页面或控件时,.designer文件随着我在页面上添加的新控件而停止更新。我不确定是什么原因导致这种情况发生,但我想知道是否有任何方法强制Visual Studio重新生成.designer文件。我使用Visual Studio 2008
编辑:对不起,我应该注意到我已经试过了:
关闭和重新打开所有文件和Visual Studio 更改页面上的runat="server"控件 删除并重新添加页面指令
有时,当我编辑页面或控件时,.designer文件随着我在页面上添加的新控件而停止更新。我不确定是什么原因导致这种情况发生,但我想知道是否有任何方法强制Visual Studio重新生成.designer文件。我使用Visual Studio 2008
编辑:对不起,我应该注意到我已经试过了:
关闭和重新打开所有文件和Visual Studio 更改页面上的runat="server"控件 删除并重新添加页面指令
当前回答
如果更新名称空间而不更新设计器文件中的名称空间,也会发生这种情况。修复:更新设计器文件中的命名空间。
其他回答
我知道的唯一方法是删除设计器文件,并将其转换为web应用程序。然而,当你这样做时,它通常会弹出错误,至于为什么它没有自动再生在第一个地方,它通常是一个控制引用,没有在页面头部声明。
如果您像我一样,将旧的. aspx文件添加到最近的项目中。 您可能会忘记页面上使用的一些控件。
如果是这样,首先,如果你安装了多个文件; 一次只修复一个。
编译时,修复生成的错误。它们可能是一样的 所有文件中的错误。
接下来,如果您有设计器文件,请删除所有插入的设计器文件。 接下来,确保在编译时没有任何其他错误,除了 设计器文件。
最后右键单击您的web项目,然后单击“转换为web应用程序”。 这将插入您需要的设计器文件。
这些绝对是解决问题的最佳步骤。
VS2015…这里有一个VB的例子,从一个网站项目切换到一个Web应用程序项目,为我工作。其他的方法对我都没用,所以我才要分享这个。这并不优雅,但很有效。
步骤0:将项目中的所有“CodeFile=”替换为“CodeBehind=” 步骤1:关闭解决方案。 步骤2:使用以下代码运行一个自制的Windows应用程序(以下步骤)。 第三步:重新打开溶液。 第四步:在解决方案资源管理器中,确保你正在显示所有文件,并搜索designer.vb(或designer.cs为c#) 步骤5:选择所有丢失的文件,并将它们包含在项目中。 步骤6:对于每个文件,查看主页面/控件并保存它。
private void button1_Click(object sender, EventArgs e)
{
ProcessDirectory(new DirectoryInfo(textBox1.Text));
}
private void ProcessDirectory(DirectoryInfo directory)
{
ProcessMask(directory, ".ascx", ".vb");
ProcessMask(directory, ".aspx", ".vb");
foreach (DirectoryInfo directoryInfo in directory.GetDirectories())
ProcessDirectory(directoryInfo);
}
private void ProcessMask(DirectoryInfo directory, string maskStart, string maskEnd)
{
FileStream fs;
foreach (FileInfo file in directory.GetFiles(string.Format("*{0}{1}", maskStart, maskEnd)))
{
string designerFileName = file.Name.Replace(string.Format("{0}{1}", maskStart, maskEnd), string.Format("{0}.designer{1}", maskStart, maskEnd));
if (directory.GetFiles(designerFileName).Length == 0)
{
using (fs = File.Create(Path.Combine(directory.FullName, designerFileName)))
{
fs.Close();
}
}
}
}
我知道我来晚了,但我想,如果在尝试了@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 %>
之后,保存文件,这将提示自动生成程序重新生成,然后我就重新启动并运行了。
如果你打开。aspx文件,在设计视图和html视图之间切换 返回后会提示VS检查控件并添加任何缺失的控件 设计器文件。
在VS2013-15中,在Project菜单下有一个Convert to Web Application命令。在VS2013之前,这个选项在as(c/p)x文件的右键上下文菜单中可用。完成此操作后,您应该看到您现在有一个*. designer .cs文件可用,并且Design HTML中的控件将可用于控件。
PS:这不应该在调试模式下进行,因为在调试时并非所有内容都要“重新编译”。
有些人还报告了删除。designer.cs文件的成功(先备份。designer.cs文件,然后删除。designer.cs文件)。重新创建同名的空文件。
对于这个答案,有许多评论添加了关于如何最好地重新创建designer.cs文件的提示。