如何删除ASP.NET Designer.cs文件



我以前处理过没有.designer.cs文件的VS项目。

现在我在另一台电脑上开始了一个新项目,我无法摆脱designer.cs文件。它真的很烦人。我真的需要它吗?我该怎么把它取下来?某个地方一定有背景。

是!你可以移除它们。。。。。。以下是如何。。。。。

如何从WEB应用程序中删除DESIGNER.CS页面

在经历了巨大的折磨和大量的测试之后,我终于找到了一个解决办法,以避免在Visual Studio中出现designer.cs页面(2015年及更早版本)。如果有人在Visual Studio中的Web应用程序项目中使用designer.cs页面,此解决方案将允许您快速清除所有应用程序编译错误,然后从项目中完全删除designer.cs页。

首先了解以下内容:

Web应用程序项目使用由Visual Studio自动生成的designer.cs页面(分部类),这些页面与Web应用程序模型所支持的Web应用程序中内置的设计工具绑定。我称之为傻瓜网站。我找不到任何设置或方法来关闭分部类和designer.cs页面的创建,因为它们通常是不必要的代码,更多地与IDE联系在一起,而不是与应用程序的功能联系在一起。所有的分部类都会编译成一个类。Web应用程序通常也会提前进行预编译或构建,这些dll会被推送到bin文件夹中。

网站项目不使用designer.cs文件,并且与IDE的绑定较少。它们允许对类结构进行更干净的编码。它们还使用分部类。但是网站项目通常是在运行时编译的。

解决方案-如何在Visual Studio中从Web应用程序项目中删除"…designer.cs"错误和文件。

除非您想在Visual Studio中将web项目从应用程序转换为网站模型,否则下面的此解决方案允许您像网站一样按原样运行项目,在网站中,您可以将该文件中的大部分或全部designer.cs分部类控件引用移到主网页分部类文件中。它还删除了所有错误,并且如果其他开发人员共享这些设计器文件并将控件添加到页面中,而忘记在特定页面上使用此解决方案,则不会干扰Visual Studio重新创建这些设计器文件。

  1. 在前端.aspx页面中,在顶部的@PAGE指令中,将"CodeBehind"更改为"CodeFile"。确保它仍然引用相同的.cs代码或类文件。

  2. 将"CodeFileBaseClass"属性添加到网页中的同一@Page指令中,并使其使用路径中的任何命名空间访问上述同一.cs的完全限定路径。

  3. 请确保使用与"CodeFileBaseClass"具有相同路径的"Inherit"属性。

您的web应用程序中的每个网页都应该有以下属性,这些属性的格式如下:

<%@ Page Language="c#" CodeFile="index.aspx.cs" CodeFileBaseClass="YourNameSpace.index" 
Inherits="YourNameSpace.index" %>

现在进入页面的designer.cs文件,将设计器文件中分部类中的任何控件引用复制到网页的主.cs文件的分部类中。如果您丢失了designer.cs文件,只需将任何web控件作为字段引用添加到编译器所说的丢失字段中即可。完成此操作后,删除designer.cs文件。您不需要它们,并且可以使用main.cs文件及其分部类完全控制您的网页控件。

以下是我在删除designer.cs文件之前在该文件中的内容。下面是我在其分部类中添加designers.cs控件引用作为字段后,项目的主index.aspx.cs文件。然后我从我的项目中完全删除了designer.cs文件及其代码:

namespace YourNameSpace
{
public partial class WebForm1
{
/// <summary>
/// form1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.Literal Message1;
}
}

在下面的index.aspx.cs文件中,您可以看到我将上面设计器的最后一个"Message1"引用行粘贴到其顶部的分部类中的位置。您可以看到我是如何在page_Load事件中访问网页Literal控件Message1并修改文本的。这表明,如果designer.cs文件丢失或其分部类失败,那么它现在被正确引用、编译并工作,而在这种引用失败之前:

namespace YourNameSpace
{
public partial class index : System.Web.UI.Page
{
protected global::System.Web.UI.WebControls.Literal Message1;
protected void Page_Load(object sender, EventArgs e)
{
this.Message1.Text = "hello world";
}
}
}

修复此问题的关键是主网页中@Page指令中的CodeFileBaseClass和CodeFile属性。这样可以防止Visual Studio IE自动生成网页中的新成员引用和控件,并将其作为存根卡在设计器页面分部类中(如果您希望在一个方便的区域中完全控制这些字段,这对我来说没有帮助)。

注意:如果您稍后通过在VS中选择项目再次为项目重新生成designer.cs文件,则在顶部菜单中选择"项目">"转换为web应用程序",这些designer.cs文件将被重新创建,但Visual Studio将只在其中放置对丢失的web控件的引用,这些控件现在没有添加到您的主.cs部分类页面中。换句话说,我在上面复制并添加到index.aspx.cs部分类文件中的任何引用都不会在新的designer.cs文件中重新创建。因此,与您正在使用的Web应用程序模型没有冲突。当您看到这些设计器文件时,您现在可以让开发人员安全地将它们复制到您的主代码隐藏.cs文件中,并根据需要安全地删除设计器。

您处理的是web应用程序,而不是网站(澄清)

是的,在web应用程序的上下文中,您确实需要它们。

真正的"回答";MS只是允许您不使用它们。

最新更新