2012-08-07 18 views
12

Używam Snarl C# API do wysyłania powiadomień do warczenia.Dlaczego pojawia się błąd CS0246: Nie można znaleźć nazwy typu lub przestrzeni nazw?

Teraz mam zapisane zawartości powyżej adres URL w pliku o nazwie SnarlNetwork.cs i zawartość mojego pliku test.cs są:

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"); 

      } 
     } 
    } 

} 

Teraz, gdy próbuję skompilować mój plik test.cs użyciu csc test.cs otrzymuję następujący błąd:

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?) 

Więc, co robię źle tutaj, bo według mnie ja nie brakuje żadnej using directive.

Odpowiedz

11

To jest problem:

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

Nie dodano odniesienie do DLL. Potrzebujesz coś takiego:

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

(lub jakkolwiek nazywa się ten zespół).

Ewentualnie, jeśli nie masz go jako oddzielnej bibliotece, po prostu skompilować obydwa pliki:

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

Jeśli nie zebraliśmy zespół, ale chcą, można użyć:

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

csc Test.cs /r:SnarlNetwork.dll 

(w rzeczywistości, określając plik wyjściowy jest konieczne w tym konkretnym przypadku, ale to jeszcze wyraźniej ...)

+0

Dzięki. Zadziałało. – RanRag

+0

Oznacz jako odpowiedź? –

+0

@JamesWood: Wezmę, ale stackoverflow mówi "Możesz zaakceptować odpowiedź w 2 minuty" – RanRag

7

Edit: O mnie ignorują, nie używając Twojego visual studio

Czy dodano odniesienie do projektu?

Ponieważ w tego typu rzeczy:

enter image description here

+1

Jest to nadal przydatna odpowiedź dla osób mniej zaznajomionych z Visual Studio. – David

2

Zwykle dzieje się ze mną, kiedy mam using ale zapomnieli odwołać zespół, który definiuje przestrzeń nazw.

Ale w twoim przypadku, ponieważ przestrzeń nazw jest zdefiniowana w pliku w twoim projekcie, zapomniałeś powiedzieć kompilatorowi o pliku snarlnetwork.cs.

Zobacz csc compiler examples

+0

Nie ma żadnego zestawu tylko plików 'SnarlNetwork.cs' i' test.cs' w moim folderze. Czy czegoś brakuje? – RanRag

3

może być du e do "profilu klienta" .NET Framework. Spróbuj użyć "pełnej wersji" .NET.

1

Miałem ten błąd w projekcie MVC. Po długich poszukiwaniach dowiedziałem się, że plik .cs zawierający niektóre klasy, do których się odwołałem w głównym projekcie, miał Akcje kompilacji ustawione na "Zawartość" ...

Po zmianie "Treść" -> "Skompiluj "błąd zniknął.

0

Miałem ten sam błąd, gdy użyto pliku cs znajdującego się w folderze projektu, ale nie odwołano się do niego.csproj z projektu nadrzędnego. Intellisence wyświetla ten plik w folderze projektu, ale kompilator go nie widzi z powodu braku odniesienia w .csproj

0

Rozwiązałem ten problem, dodając odniesienie do System.Web.

2

Rozwiązałem ten problem, aktualizując docelowy schemat w ustawieniach aplikacji projektu. Projekt kompilował się z .net framework w wersji 4.5.1, ale biblioteka DLL, do której się odwołano, została skompilowana z wersją 4.6.1. Tak więc zaktualizowałem wersję mojego projektu. enter image description here

+0

Dziękuję bardzo, bardzo dziękuję –

7

używałem .NET Framework 4.5 ale moja nowa biblioteka miała .NET Framework 4.5.2 i mam ten sam problem, kiedy starałem się budować. Rozwiązałem go, aktualizując mój projekt z 4.5 do 4.5.2 (tak samo jak moja biblioteka).

0

Mam również ten błąd z powodu braku odniesienia. Powodem, którego nie zauważyłem, jest to, że Resharper proponuje dodanie użycia i odniesienia. Dodanie użycia kończy się sukcesem (ale jest podświetlone na szaro), podświetlanie składni brakujących klas działa (czasami), ale dodanie odwołania nie powiedzie się po cichu.

Podczas ręcznego dodawania odnośnika pojawia się błąd wyjaśniający, dlaczego dodanie referencji nie powiedzie się (odwołanie cykliczne). Resharper nie przekazał tego błędu do GUI.

Powiązane problemy