c# - Asp.Net 中的子命名空间太多了吗? CS0234

标签 c# asp.net web-config

在 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/

相关文章:

c# - 在键盘事件中使用 CancellationToken 调用 Task.Delay 时出现 TaskCanceledException

针对不同返回类型的 C# 策略设计模式

asp.net - 如何在ASP.NET请求生命周期中处理异常

asp.net - F5 不适用于 Visual Studio 2017 RC 中的 VS2015 ASP.NET 项目

c# - 在 C# 中使用嵌套对象渲染 MongoDB 更新文档

c# - 如何等待 webclient OpenReadAsync 完成

asp.net - 如何为 .NET 开发创建我的第一个数据库?

asp.net-mvc - IIS Express Url 重写模块非常简单的重定向不起作用

asp.net - 读取web.config中的环境变量

asp.net - ASP.NET web.config 文件中的环境变量