在 Asp.Net 项目上工作,添加一个新控件 (ascx),遇到一个奇怪的 CS0234 问题。基本上,编译器找不到完全限定的 namespace 。让它真正奇怪的是,有时它能找到它,有时却找不到。每次我进行构建时,它都无法在不同的文件中找到它。也就是说,有时它会构建。有时它在文件 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 类型或 namespace 名称‘Project.WebUserControls.ControlType’不存在在类或 namespace 'Project.WebUserControls' 中(您是否缺少程序集引用?)”,即使它肯定存在于该 namespace 中。此外,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"
,它将无法编译。
此修复工作了大约半小时,并进行了几次构建,但现在已停止工作。不,我没有更改任何代码以使其停止工作。
有什么想法吗?
几个小时后: 将类名、类和文件分别在命名空间和路径中向上移动一层似乎已经解决了这个问题。也就是说,它现在位于命名空间 Project.WebUserControls 和路径 c:..\Project\WebUserControls\
不知道为什么会这样。路径名少于 255 个字符。
第二天,又坏了……什么都没变。
最佳答案
听起来 vstudio/IIS 所做的卷影副本没有被正确重建/使用。
尝试内置开发者服务器(在 vstudio 中)或重新启动 IIS
关于c# - Asp.Net 中的子命名空间太多了吗? CS0234,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4197436/