在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个字符。
第二天,再次破碎......没有改变任何东西。
答案 0 :(得分:0)
听起来像vstudio / IIS没有正确重建/使用的卷影副本。
尝试内置的开发人员服务器(在vstudio中)或重新启动IIS
答案 1 :(得分:0)
听起来更像是Visual Studio问题而不是C#/ .NET问题。
只是为了澄清:只有在你添加一些类然后尝试访问它之后才会得到这些错误,或者在每次构建后随机发生这些错误,即使你没有添加任何东西?