Designer.cs文件自动创建错误

时间:2009-06-25 14:20:50

标签: asp.net namespaces master-pages

像我一样有缺陷,我收到了一些不必要的帮助,以Visual Studio 2008的形式创建错误,将不正确的代码添加到.designer.cs文件中。我很感激,它可能是因为我的遗漏或错误而做到这一点 - 但我会借口说我实际上是一个崭露头角的ASP.NET开发人员,所以我还在学习。

解决方案的相关部分看起来像这样:

/Prototypes
  /Project01.Master
   - Project01.Master.cs
   - Project01.Master.designer.cs
  /SampleApplication.aspx
   - SampleApplication.aspx.cs
   - SampleApplication.aspx.designer.cs 

我不完全确定要在问题中包含哪些文件,所以我会尽力猜测。 .Master.cs和SampleApplication.aspx.cs都包含在Project01.Prototypes命名空间内(虽然我对此并不珍贵,它是自动添加和工作的东西,而我不需要考虑它)

在SampleApplication.aspx的顶部是以下内容(为了能够访问理论上显示的主页面的某些属性,公开。

<%@ Page Language="C#" MasterPageFile="~/Prototypes/Project01.Master" AutoEventWireup="true" CodeBehind="SampleApplication.aspx.cs" Inherits="Project01.Prototypes.SampleApplication" %>
<%@ MasterType VirtualPath="~/Prototypes/Project01.Master" %>

在SampleApplication.aspx.designer.cs中是:

namespace Project01.Prototypes {

  public partial class SampleApplication {

    public new Project01.Prototypes.Project01 Master {
      get {
        return ((Project01.Prototypes.Project01)(base.Master));
      }
    }
  }
}

所有这些都会导致错误:

The type name 'Prototypes' does not exist in the type 'Project01.Prototypes.Project01'

我可以通过删除'Project01.Prototypes'来修复此错误并再次进行构建。类本身内的引用(离开命名空间)。我的问题是,这只是一个临时解决方案,因为Visual Studio不断添加它 - 所以我想问题是我的错误实际位于何处?

P.S。如果它很重要,我将使用ASP.NET MVC Web应用程序在Visual Studio 2008中运行。

2 个答案:

答案 0 :(得分:6)

问题是您的顶级命名空间和主页面类具有相同的名称。因此,当编译器尝试解析类型时,它正在主页类中查找类型“Prototypes.Project01”。

建议在mastertype指令而不是virtualpath上使用typename属性,但是当你在那里使用限定类型名称时,解析器似乎会窒息。所以我认为你有两种选择:

  1. 重命名母版页。使用项目名称似乎无论如何都会引起混淆。
  2. 请勿使用mastertype指令并手动声明代码隐藏文件中的Master属性。

答案 1 :(得分:-2)

您是否尝试过关闭VS 2008,然后再次打开项目? 这通常适合我。