在Asp.Net项目上工作,添加一个新控件(ascx),会遇到一个奇怪的CS0234问题。基本上,编译器找不到一个完全限定的命名空间。令人感到奇怪的是,有时它能找到它,有时它却找不到。每次我做一个构建时,它都无法在不同的文件中找到它。也就是说,有时它会建造。有时它在文件a和b中找到它,但在c和d中找不到它;有时它在a、b和c中找到名称空间,但没有找到d。
添加在类ClassName (ClassName.ascx和ClassName.ascx.cs文件)中定义的新控件。
路径是:C:.\Project\WebuserControls\ControlType
命名空间是Project.WebUserControls.ControlType。
在我调用Project.WebUserControls.ControlType.ClassName.SomeMethod();的整个项目中,当我编译时,我得到错误"CS0234类型或名称空间名称'Project.WebUserControls.ControlType‘在类或名称空间'Project.WebUserControls’中不存在(您是否缺少程序集引用?)尽管它确实存在于该名称空间中。此外,Intellisense无法找到名称空间或其中的任何内容。
c#文件的形式为
namespace Project.WebUserControls.ControlType
{
using System
...etc
public partial class ClassName : System.Web.UI.UserControl
{在谷歌上搜索了很多信息之后,我找到了this,这可能会带来一个解决方案。
在web.config中:
<system.web>
...
<pages>
...
<namespaces>
<add namespace="Project.WebUserControls" />有趣的是,如果我用namespace="Project.WebUserControls"替换namespace="Project.WebUserControls.ControlType",它就不会编译。
这个修复工作了大约半个小时,几个构建,但现在已经停止工作。不,我没有改变任何代码让它停止工作。
有什么想法吗?
几个小时后:将ClassName (类和文件)分别移到名称空间和路径的一个级别似乎解决了问题。也就是说,它现在位于名称空间Project.WebUserControls和路径c上:..\Project\WebUserControls\
不知道为什么会这样。路径名很好地低于255个字符。
第二天又坏了..。什么都没改变。
发布于 2010-11-16 18:13:14
听起来好像vstudio/IIS所做的影子复制没有被正确地重建/使用。
尝试内置的开发人员服务器(在vstudio中)或重新启动IIS
发布于 2010-11-16 20:25:41
在我看来,听起来更像是问题,而不是C#/.NET问题。
澄清一下:只有在添加了某个类之后才会得到这些错误,然后尝试访问它,或者在每次构建之后随机获得这些错误,即使您没有添加任何内容?
https://stackoverflow.com/questions/4197436
复制相似问题