2009-06-25 89 views
0

因为我有缺陷,我收到了一些不必要的帮助,以Visual Studio 2008的形式创建错误,将不正确的代码添加到.designer.cs文件。我很欣赏,这可能是因为我的遗漏或错误 - 但我会用这个借口说明我实际上是一个成熟的ASP.NET开发人员,所以我仍然在学习。Designer.cs文件自动创建错误

解决方案的相关部分Explorer的是这样的:

/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' 

我可以修复这个错误和g通过摆脱类中的'Project01.Prototypes。'引用(离开命名空间)来重新构建。我的问题是,这只是一个临时解决方案,因为Visual Studio不断添加它 - 所以我想问题是我的错误实际上位于哪里?

p.s.如果这很重要,我在Visual Studio 2008中运行一个ASP.NET MVC Web应用程序。

回答

6

问题是您的顶级命名空间和您的母版页类具有相同的名称。所以当编译器试图解析这个类型时,它在你的主页面类中寻找一个类型“Prototypes.Project01”。

推荐使用mastertype指令的typename属性而不是虚拟路径,但解析器在您使用限定类型名称时似乎会窒息。所以当我看到它时,您有两种选择:

  1. 重命名您的母版页。无论如何,使用项目名称似乎可能会导致混淆。
  2. 请勿使用mastertype指令并手动在代码隐藏文件中声明主属性。
+0

我已经有了一些混乱,现在将主文件重命名为Project01Theme,现在更改了参考文件等等以及它的所有编译 - 包括以前需要更改的行。我看到了我现在所做的缺陷 - 很高兴我发布了这个问题,尽管我可能已经有一段时间了。 – Amadiere 2009-06-25 15:28:32

-2

你试过关闭VS 2008,然后再次打开你的项目? 通常这对我来说。

+0

这对我不起作用,因为这个问题是在几天之间的挫折inbetween其中,我完全关闭我的电脑的结果。我的问题是,我不知道什么是代码恢复/更改,因为它很少发生。 – Amadiere 2009-06-25 14:36:32