在VS生成的代码中,名称空间“Y”中不存在类型或命名空间名称“X”

时间:2011-04-05 13:32:54

标签: c# asp.net-mvc

这是我遇到过的最奇怪的错误。

这个MVC网络项目工作正常,直到今天。它在几周内没有被任何人处理过。

即使NOTHING已经改变,现在只需运行它就会产生:

The type or namespace name 'ColourboxViewModel' does not exist in the namespace 'CMSModels.ViewModels'

(X5)

The type or namespace name 'Colourbox' does not exist in the namespace 'CMSModels' (are you missing an assembly reference?)

(X1)

项目中有对CMSModels的引用。删除此引用为命名空间中的每个其他类提供了大约200个额外错误,因此我知道它正在工作,但不是这两个错误。

这是生成的代码行,错误指向:

public class views_colorbox_index_aspx : System.Web.Mvc.ViewPage<IEnumerable<CMSModels.Colourbox>>, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler {
...
public class views_colorbox_content_ascx : System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourboxViewModel> {

Intellisense正在获取CMSModels.ColourBox和CMSModels.ViewModels.ColourboxViewModel的位置。

我完全难过了。任何帮助都非常感激,因为我完全不知所措。


好的我找到了问题 - 但不是解决方案。

该类定义为

public class ColourBoxViewModel

但生成的代码正在寻找一个'ColourboxViewModel'类。注意小写B.自动生成代码从哪里获取类的名称?在项目中搜索显示没有提及小写字母b。

ColourBox类的问题是相同的。


问题解决了 - @FrantišekŽiačik你是对的。有一个文件夹已被排除在项目之外(这就是为什么在整个项目中搜索并在visual studio的视图中找不到任何内容),其中包含错误输入的继承语句。排除的文件夹最初由外包商创建时称为ColorBox。这已经被团队中的另一个开发者复制并重命名为ColourBox,他们决定并且我引用“拼写正确的一切”。现在只允许所述开发人员使用Speak n'Spell进行编码。

2 个答案:

答案 0 :(得分:5)

所以这是我的猜测。

content.ascx视图(或其名称)中,您声明了:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourboxViewModel>" %>

而不是

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMSModels.ViewModels.ColourBoxViewModel>" %>

答案 1 :(得分:5)

昨天我有这个错误,我找到了这些答案,但在我的情况下,他们没有帮助。 相反,事实证明,在我的项目属性客户端中,Target框架被设置为.NET Framework 4 Client Profile。 解决方案是将其更改为完整的.NET 4.希望这可以帮助某人,因为VS中的错误不是很有帮助。