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

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

现在我已将上面url的内容保存在名为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

这就是问题:

 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 

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

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

编辑:哦,不理我,你不是在使用Visual Studio。

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

就像在这种事情:

在此处输入图像描述

我通过在项目应用程序设置中更新目标框架来解决此问题。 该项目正在使用.net框架版本4.5.1进行编译,但引用的dll是使用版本4.6.1编译的。 所以更新了我的项目版本。 在此处输入图像描述

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

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

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

请参阅csc编译器示例

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

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

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

完成!

希望它的帮助:)

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

事实certificate,使用.Net 4.6.1的库(解决方案中的项目)和我的项目使用的是4.5.2

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

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

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

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