为什么我收到错误CS0246:找不到类型或命名空间名称?

时间:2012-08-07 21:19:42

标签: c# namespaces

我正在使用Snarl C# API向snarl发送通知。

现在,我已将上述网址的内容保存在名为SnarlNetwork.cs的文件中,并且我的test.cs文件的内容为:

using SnarlNetworkProtocol;
using System;
class test
{
    public static void Main(String[] args)
    {
        SNP snarl_object = new SNP();
        string hostname = "localhost";
        string hostport = "9887";
        string appName = "Spotify";

        bool val = snarl_object.register(hostname, hostport, appName);

        if (val == true)
        {
            string title = "hello";
            string message = "world";
            string timeout = "5";
            bool newval = snarl_object.notify(hostname, hostport, appName, null, title, message, timeout);

            if (newval == true)
            {
                Console.WriteLine("sucessfull");

            }
        }
    }

}

现在,当我尝试使用csc test.cs编译test.cs文件时,出现以下错误:

C:\Users\Noob\csharp>csc test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.4926
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

test.cs(1,7): error CS0246: The type or namespace name 'SnarlNetworkProtocol' could not be found (are you missing a using directive or an assembly reference?)

所以,我在这里做错了什么,因为根据我的说法,我没有遗漏任何using directive

16 个答案:

答案 0 :(得分:21)

我使用的是 .NET Framework 4.5 ,但我的新库有 .NET Framework 4.5.2 ,当我尝试构建时遇到了同样的问题。我通过将项目从 4.5 更新为 4.5.2 (与我的库相同)解决了这个问题。

答案 1 :(得分:14)

这是问题所在:

C:\Users\Noob\csharp>csc test.cs

您尚未添加对DLL的引用。你需要这样的东西:

C:\Users\Noob\csharp>csc test.cs /r:SnarlNetwork.dll

(或调用任何程序集)。

或者,如果您没有将它作为单独的库,只需编译两个文件:

C:\Users\Noob\csharp>csc test.cs SnarlNetwork.cs

如果您尚未编译程序集但想要,则可以使用:

csc /target:library /out:SnarlNetwork.dll SnarlNetwork.cs

csc Test.cs /r:SnarlNetwork.dll

(事实上,在这种特殊情况下,指定输出文件是不必要的,但它仍然更清晰......)

答案 2 :(得分:8)

我已通过在项目应用程序设置中更新目标框架来解决此问题。 该项目正在使用.net框架版本4.5.1进行编译,但引用的dll是使用版本4.6.1编译的。 所以更新了我的项目版本。enter image description here

答案 3 :(得分:7)

编辑:哦,不理我,你没有使用Visual Studio。

您是否添加了对项目的引用?

就像这样的事情:

enter image description here

答案 4 :(得分:3)

可能是由于.NET Framework的“客户端配置文件”。 尝试使用.NET的“完整版”。

答案 5 :(得分:2)

当我有一个using语句但却忘记引用定义命名空间的程序集时,这通常会发生在我身上。

但在您的情况下,由于命名空间是在项目的文件中定义的,因此您忘记告诉编译器有关snarlnetwork.cs文件的信息。

请参阅csc compiler examples

答案 6 :(得分:1)

我在MVC项目中遇到此错误。经过长时间的研究后,我发现包含我在主项目中引用的一些类的.cs文件将Build Actions设置为“Content”......

更改后“内容” - >“编译”错误消失。

答案 7 :(得分:1)

.NET Framework导致的大多数问题。所以只需转到项目属性并更改与您的参考dll相同的.Net版本。

完成!!!

希望它有所帮助:)

答案 8 :(得分:1)

我通过确保我的项目与它所依赖的项目/库共享相同的.Net Framework版本来解决这个问题。

原来,使用.Net 4.6.1的库(解决方案中的项目)和我的项目使用4.5.2

答案 9 :(得分:1)

检查您的Web.Config并找到命名空间=。您可以删除,或者如果需要,则必须创建新的

答案 10 :(得分:0)

当使用cs文件位于项目文件夹中时,我遇到了同样的错误,但没有从父项目的.csproj引用。 Intellisence在项目文件夹中看到此文件,但编译器因为缺少.csproj中的引用而看不到它

答案 11 :(得分:0)

我通过添加对System.Web的引用解决了这个问题。

答案 12 :(得分:0)

由于缺少引用,我也遇到了这个错误。 我没有注意到的原因是因为Resharper提供添加使用和参考。添加使用成功(但它突出显示为灰色),缺少类的语法突出显示(有时),但添加引用无声地失败。

手动添加引用时会弹出一个错误,解释添加引用失败的原因(循环引用)。 Resharper没有将此错误传递给GUI。

答案 13 :(得分:0)

当我从Git克隆项目并第一次直接构建解决方案时,我遇到了同样的问题。而不是去文件浏览器中的本地存储库,然后双击解决方案文件(.sln)解决了我的问题。

答案 14 :(得分:0)

在首先提出并开始新的解决方案后,我遇到了类似的问题。首先清理项目,将其固定在Visual Studio中。然后还原软件包。当我再次构建时,不再有类型或名称空间错误。

答案 15 :(得分:0)

我也遇到了同样的问题,

原因:为什么我会遇到此错误, 而不是创建新的局部视图, 我创建了类,然后将其扩展名从“ .cs”重命名为“ .cshtml”。

解决方案: 只需删除该重命名视图并重新创建适当的部分/完整视图即可。之后它将正常工作。