2012-08-07 14 views
12

Sto usando Snarl C# API per inviare notifiche al ringhio.Perché visualizzo l'errore CS0246: Impossibile trovare il nome del tipo o dello spazio dei nomi?

ora ho salvato il contenuto di sopra URL in un file chiamato SnarlNetwork.cs e il contenuto del mio file test.cs sono:

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

      } 
     } 
    } 

} 

Ora, quando provo a compilare il mio file Test.cs utilizzando csc test.cs ho la seguente errore:

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

Allora, che cosa sto facendo male qui perché secondo me non manca alcun using directive.

risposta

11

Questo è il problema:

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

Non hai aggiunto un riferimento alla DLL. Hai bisogno di qualcosa del tipo:

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

(o qualunque sia l'assembly è chiamato).

In alternativa, se non avete capito come una libreria separata, basta compilare entrambi i file:

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

Se non è stato compilato un assemblaggio ma vogliono, è possibile utilizzare:

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

csc Test.cs /r:SnarlNetwork.dll 

(in realtà, specificando il file di output non è necessaria in questo caso particolare, ma è ancora più chiaro ...)

+0

Grazie. Ha funzionato. – RanRag

+0

Contrassegnare come risposta? –

+0

@JamesWood: Lo farò, ma StackOverflow dice 'È possibile accettare la risposta in 2 minuti' – RanRag

7

Edit: O ignorare me, il tuo non utilizzando Visual Studio

Avete aggiunto il riferimento al progetto?

Come in questo genere di cose:

enter image description here

+1

Questa è ancora una risposta utile per quelli di noi meno familiari con Visual Studio. – David

2

Questo di solito succede a me quando ho un using ma ho dimenticato di fare riferimento all'assemblea che definisce lo spazio dei nomi.

Ma nel tuo caso, poiché lo spazio dei nomi è definito in un file nel tuo progetto, hai dimenticato di dire al compilatore del file snarlnetwork.cs.

Vedi csc compiler examples

+0

Non ci sono assemblaggi solo i file 'SnarlNetwork.cs' e' test.cs' nella mia cartella. Mi sto perdendo qualcosa. – RanRag

3

potrebbe essere du e a "profilo client" di .NET Framework. Prova ad usare la "versione completa" di .NET.

1

Ho avuto questo errore su un progetto MVC. E dopo una lunga ricerca ho scoperto che il file .cs contenente alcune delle classi a cui facevo riferimento nel progetto principale aveva un'azione di compilazione impostata su "Contenuto" ...

Dopo averlo modificato "Contenuto" -> "Compila "l'errore è scomparso.

0

Ho avuto lo stesso errore quando si utilizzava il file cs che si trovava nella cartella del progetto, ma non referenziato da.csproj del progetto padre. Intellisence vede questo file all'interno della cartella del progetto, ma il compilatore non lo vede a causa del riferimento mancante in .csproj

0

Ho risolto questo problema aggiungendo il riferimento a System.Web.

2

Ho risolto questo problema aggiornando il framework di destinazione nelle impostazioni dell'applicazione del progetto. Il progetto è stato compilato con .net framework versione 4.5.1 ma la DLL che era stata referenziata è stata compilata con la versione 4.6.1. Quindi ho aggiornato la versione del mio progetto. enter image description here

+0

Grazie a youuuuuuuuuuuu molto –

7

usavo .NET Framework 4.5 ma la mia nuova biblioteca aveva .NET Framework 4.5.2 e ho avuto lo stesso problema quando ho cercato di costruire. Ho risolto il problema aggiornando il mio progetto da 4.5 a 4.5.2 (uguale alla mia libreria).

0

Ho anche ricevuto questo errore a causa di un riferimento mancante. Il motivo per cui non ho notato è perché Resharper offre di aggiungere un utilizzo e un riferimento. L'aggiunta dell'utilizzo ha esito positivo (ma è evidenziata in grigio), l'evidenziazione della sintassi delle classi mancanti funziona (a volte), ma l'aggiunta del riferimento non riesce in modo silenzioso.

Quando si aggiunge manualmente il riferimento, viene visualizzato un errore che spiega perché l'aggiunta del riferimento non riesce (riferimento circolare). Resharper non ha passato questo errore alla GUI.

Problemi correlati