为什么我收到错误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。