是的!你可以删除它们......这是如何......
如何从您的网络应用程序中删除 DESIGNER.CS 页面
经过巨大的折磨和大量测试,在 Visual Studio(2015 版及更早版本)中寻找一种避免 Designer.cs 页面的方法,我终于找到了解决此问题的方法。如果有人在 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 项目从应用程序转换为网站模型,否则下面的此解决方案允许您按原样运行项目,但就像网站一样,您可以在其中移动大部分或所有设计器.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 文件中的内容。在我将 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 事件中访问网页文字控件 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 文件将被重新创建,但可视Studio 只会在其中放置对缺少的 Web 控件的引用,这些控件现在未添加到您的主 .cs 部分类页面中。换句话说,我在上面复制并添加到我的 index.aspx.cs 部分类文件的任何引用都不会在新的 Designer.cs 文件中重新创建。因此与您使用的 Web 应用程序模型没有冲突。当您看到这些设计器文件时,您现在可以让开发人员将它们安全地复制到 .cs 文件后面的主代码中,并根据需要安全地删除设计器。