2012-08-07 308 views
12

我正在使用Snarl C# API來發送通知給snarl。爲什麼我會收到錯誤CS0246:無法找到類型或名稱空間名稱?

現在我已保存上面的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

回答

11

這就是問題所在:

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 

(事實上,指定輸出文件是在這種特殊情況下是不必要的,但它仍然是清晰的...)

+0

謝謝。有效。 – RanRag 2012-08-07 21:26:17

+0

標記爲答案嗎? – 2012-08-07 21:30:31

+0

@JamesWood:我會但是stackoverflow說'你可以在2分鐘內接受答案' – RanRag 2012-08-07 21:32:50

7

編輯:O型不理我,你沒有使用Visual Studio的

您已經添加引用到你的項目?

正如這樣的事情:

enter image description here

+1

對於那些對Visual Studio不太熟悉的人來說,這仍然是一個有用的答案。 – David 2016-08-16 04:21:38

2

這通常發生在我身上時,我有一個使用聲明,但忘了引用定義命名空間中的組件。

但在你的情況下,由於命名空間是在項目中的文件中定義的,因此你忘記告訴編譯器snarlnetwork.cs文件。

csc compiler examples

+0

我的文件夾中沒有隻有'SnarlNetwork.cs'和'test.cs'文件。我錯過了什麼。 – RanRag 2012-08-07 21:22:46

3

這可能是杜e轉換爲.NET Framework的「客戶端配置文件」。嘗試使用.NET的「完整版本」。

1

我在MVC項目上遇到了這個錯誤。經過長時間的研究,我發現包含我在主項目中引用的一些類的.cs文件的Build Actions設置爲「內容」...

更改「Content」 - >「Compile 「錯誤消失了。

0

我使用cs文件時位於項目文件夾內,但沒有引用來自同一錯誤。父項目的csproj。 Intellisence在項目文件夾中看到此文件,但編譯器沒有看到它,因爲在.csproj中缺少引用

0

我已通過添加對System.Web的引用來解決此問題。

2

我已通過更新項目應用程序設置中的目標框架解決了此問題。 該項目正在編譯.net框架版本4.5.1,但引用的dll與版本4.6.1編譯。 所以更新了我的項目版本。 enter image description here

+0

非常感謝youuuuuuuuuuuuu – 2017-11-15 22:35:26

7

我用的.NET Framework 4.5但我的新文庫的.NET Framework 4.5.2,我得到了同樣的問題,當我試圖建立。我通過更新我的項目從4.54.5.2(與我的圖書館相同)解決了問題。

0

我也有這個錯誤,由於缺少參考。 我沒有注意到的原因是因爲Resharper提供添加使用和參考。添加使用成功(但突出顯示爲灰色),缺失類的語法突出顯示可以工作(有時),但添加引用會失敗。

手動添加引用時會彈出一個錯誤,說明添加引用失敗的原因(循環引用)。 Resharper沒有將這個錯誤傳遞給GUI。

相關問題