像我一样有缺陷,我收到了一些不必要的帮助,以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中运行。
答案 0 :(得分:6)
问题是您的顶级命名空间和主页面类具有相同的名称。因此,当编译器尝试解析类型时,它正在主页类中查找类型“Prototypes.Project01”。
我 建议在mastertype指令而不是virtualpath上使用typename属性,但是当你在那里使用限定类型名称时,解析器似乎会窒息。所以我认为你有两种选择:
答案 1 :(得分:-2)
您是否尝试过关闭VS 2008,然后再次打开项目? 这通常适合我。