错误 "一个命名空间不直接包含诸如字段或方法之类的成员"

37

我正在尝试构建我的C#项目,但是遇到了错误信息"A namespace does not directly contain members such as fields or methods"。它将app.config文件的第一个字符(小于号符号)标记为错误。

我已经检查了所有文件,查找命名空间中直接包含变量或函数的地方,但没有发现问题。 app.config看起来也没问题。

谷歌无法给我答案,我很苦恼。这个错误是什么原因导致的呢?


2
你是否将 app.config 和实际的源文件搞混了? - Anon.
8个回答

57

结果!就在我终于迈出了询问问题、寻找答案的一步后...

app.config文件中的属性部分(不知何故)将构建操作设置为“编译”,而应该设置为“无”。

这到底是怎么改变的?我知道我没有改过它。咕噜咕噜...

不管怎样,至少现在已经能够构建了。希望其他人也能从我的掉发中受益。


是的,你做到了。现在,你昨天在哪里?! - BoltBait
1
为了一些其他愚蠢的问题而苦恼到不行。大多数教训都是从第一手经验中学到的:/ - Anon.
我的头发又长出来了,谢谢伙计!@BoltBait(之前是螺栓吗?) - Langeleppel
1
如果任何不应编译的东西切换到Build Action = Compile,而不仅仅是app.config,就会发生这种情况。在我们的情况下,只有一个LESS文件,讽刺的是,在Web Essentials中它被“编译”,但在Visual Studio Build Action中被“编译”时会出错。 - Chris Moschini
如果你将一个文件命名为.cs,然后将其重命名为.ts,那么TypeScript也会出现这种情况。 - Simon_Weaver

5

我成功地重现了这个错误。

检查app.config文件的属性。 Build Action 应该是 None,而不是 Compile


0

我遇到了同样的错误。检查了一下 app.config 是否设置为 none,没有问题。经过 30 分钟的反复检查,我重新启动了 VS,问题就解决了。这通常可以解决 90% 的不合逻辑的错误。唉。


0
我在我的网站后台代码中遇到了类似的问题。 问题最终是由于多余的闭合括号导致我的类在page_load()之后就结束了。始终要检查这种愚蠢的语法错误。

0
我是这样解决的:右键单击.axml文件->构建操作->Android资源(Xamarin Studio)

0

当您尝试直接将字段或成员添加到命名空间中时,会出现此错误。由于它指向了app.config,很可能是VS处于不良状态。尝试关闭并重新打开Visual Studio,看看错误是否消失。

如果仍然失败,请尝试重新构建并将构建输出窗口的结果发布到您的问题中。


0

我曾经遇到过与XML文件相关的同样问题。这是由于.net编译器试图编译此仅用于数据目的的xml,因此无需编译。

解决方法:转到此文件的属性并将“生成操作”从编译更改为内容。

谢谢


0
在我的情况下,我错误地将一个新函数放在控制器类外面。这是我在ASP.NET MVC中的代码,导致了这个错误。
public class HomeController : Controller
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }       
    }

    [HttpPost]
    public string Insert(string name, string age, string standard, string percent, string address, string status)
    {
        //some code
        return "value";
    }
}

应该是这样的:

public class HomeController : Controller
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public string Insert(string name, string age, string standard, string percent, string address, string status)
        {
            //some code
            return "value";
        }       
    }        
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接