是的!您可以删除它们......这是方法......
如何从 Web 应用程序中删除 DESIGNER.CS 页面
经过巨大的折磨和大量测试,寻求一种避免 Visual Studio(2015 版及更早版本)中的 Designer.cs 页面的方法,我终于找到了解决此问题的方法。如果有人被困在 Designer.cs 页面中网络应用项目在 Visual Studio 中,此解决方案将允许您快速删除所有应用程序编译错误,然后从项目中完全删除 Designer.cs 页面。
首先了解以下几点:
网络应用项目使用 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 重新创建这些设计器文件。
在前端 .aspx 页面中,在顶部的 @PAGE 指令中,将“CodeBehind”更改为“CodeFile”。确保它仍然引用相同的 .cs 代码或类文件。
将“CodeFileBaseClass”属性添加到网页中的同一 @Page 指令,并让它访问上面相同 .cs 的完全限定路径以及路径中的任何命名空间。
确保使用与“CodeFileBaseClass”相同路径的“Inherit”属性。
您的 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 文件中的内容。下面是我将 designs.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 事件中访问网页文字控件 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 文件后面的主代码中,并根据需要安全地删除设计器。