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

时间:2012-12-13 20:18:38

标签: asp.net visual-studio partial-methods

在没有.designer.cs文件之前,我曾参与过VS项目。

现在我在另一台计算机上启动了一个新项目,我无法摆脱designer.cs文件。这真让我烦恼。我真的需要它,我该如何删除它?某处必须有设置。

2 个答案:

答案 0 :(得分:2)

您正在处理网络应用程序而非网站(clarification

是的,在Web应用程序的上下文中,您执行需要它们。

答案 1 :(得分:0)

YES!你可以删除它们......这里是如何.....

如何从您的网络应用程序中删除DESIGNER.CS页面

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

首先要了解以下内容:

Web应用程序项目使用Visual Studio自动生成的designer.cs页面(部分类),它们与Web应用程序模型所支持的Web应用程序中内置的设计工具相关联。我把它称为虚拟网站。我找不到任何设置或方法来关闭部分类和designer.cs页面的创建,因为它们通常是不必要的代码,而不是应用程序的功能。无论如何,所有的部分类都被编译成一个类。一般而言,Web应用程序也会通过设计提前预编译或构建,并且这些dll会被推送到bin文件夹中。

网站项目不使用designer.cs文件,与IDE的联系较少。它们允许更清晰的类结构编码。他们也使用部分课程。但网站项目通常在运行时进行编译。

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

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

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

  2. 添加" CodeFileBaseClass"属性到您网页中的相同@Page指令,并让它访问路径上任何名称空间的相同.cs的完全限定路径。

  3. 确保使用"继承"属性与" CodeFileBaseClass"相同的路径。

  4. 对于Web应用程序中的每个网页,您都应具有以下格式:这些属性的格式如下:

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

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

    以下是我在designer.cs文件中删除之前的内容。下面是我的项目的主要index.aspx.cs文件,我将designers.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文件中,您可以看到我粘贴最后一个&#34; Message1&#34;上面设计师的参考线到顶部的部分类。您可以看到我如何能够在我的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属性。这可以防止Web页面中的新成员引用和控件被Visual Studio IE自动生成并作为存根设置在设计器页面部分类中(当您希望在单个方便区域中完全控制这些字段时,这对我来说没有用)

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