Pourquoi j'obtiens l'erreur CS0246: le type ou le nom d'espace de noms n'a pas pu être trouvé?

j'utilise Snarl C# API envoyer des notifications à snarl.

Maintenant, j'ai sauvegardé le contenu de l'url ci-dessus dans un fichier nommé SnarlNetwork.cs et le contenu de mon test.cs les fichiers sont:

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

            }
        }
    }

}

Maintenant, quand j'essaie de compiler mon test.fichier cs utilisant csc test.cs j'obtiens l'erreur suivante:

C:UsersNoobcsharp>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?)

alors, qu'est-ce que je fais de mal ici parce que selon moi je n'en manque pas using directive.

18
demandé sur RanRag 2012-08-08 01:19:41

12 réponses

C'est le problème:

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

vous n'avez pas ajouté de référence à la DLL. Vous avez besoin de quelque chose comme:

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

(ou quel que soit le nom de l'Assemblée).

alternativement, si vous ne l'avez pas comme une bibliothèque séparée, compilez juste les deux fichiers:

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

si vous n'avez pas compilé d'assemblage mais voulez, vous pouvez utiliser:

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

csc Test.cs /r:SnarlNetwork.dll

(en fait, spécifier le fichier de sortie est inutile dans ce particulier cas, mais c'est encore plus clair...)

13
répondu Jon Skeet 2012-08-07 21:22:35

j'ai été en utilisant .NET Framework 4.5 mais ma nouvelle bibliothèque avait .NET Framework 4.5.2 4.5 4.5.2 (comme Ma bibliothèque).

11
répondu Actek14 2016-12-23 00:23:44

Edit: Oh m'ignorer, vous n'êtes pas à l'aide de Visual Studio.

Avez-vous ajouté la référence à votre projet?

Comme dans ce genre de chose:

enter image description here

7
répondu James Wood 2018-04-11 11:27:08

j'ai résolu ce problème en mettant à jour le cadre cible dans les paramètres d'application du projet. Le projet compilait avec .net framework version 4.5.1 mais la dll référencée était compilée avec la version 4.6.1. Vous avez donc mis à jour la version de mon projet.enter image description here

4
répondu Vishwa G 2016-11-28 07:16:20

cela pourrait être dû au" profil client " du cadre.net. Essayez d'utiliser la "version complète" de .NET.

3
répondu wely.lau 2013-03-01 06:30:26

cela m'arrive habituellement quand j'ai une déclaration d'utilisation mais que j'ai oublié de faire référence à l'assemblée qui définit l'espace de noms.

Mais dans ton cas, comme l'espace de noms est définie dans un fichier de votre projet, vous avez oublié de dire au compilateur la snarlnetwork.cs fichier.

Voir exemples de compilateurs du SCC

2
répondu Sam Axe 2012-08-07 21:21:39

j'ai eu cette erreur sur un projet MVC. Et après une longue recherche j'ai trouvé que l' .le fichier cs contenant certaines des classes que j'ai référencées dans le projet principal avait des actions de construction définies à" Content"...

Après modification "Contenu"->"Compiler" l'erreur a disparu.

1
répondu Stefan Michev 2014-07-14 16:37:29

j'ai eu la même erreur lorsque le fichier cs utilisé était situé dans le dossier du projet, mais n'était pas référencé à partir .csproj du projet parent. Intellisence voir ce fichier dans le dossier du projet, mais le compilateur ne le voit pas à cause d'une référence manquante .csproj

0
répondu AdvanTiSS 2016-02-09 15:31:09

j'ai résolu ce problème en ajoutant la référence au système.Web.

0
répondu maxspan 2016-03-16 06:22:07

j'ai aussi eu cette erreur à cause d'un manque de référence. La raison pour laquelle je n'ai pas remarqué est que Resharper offre d'ajouter une utilisation et une référence. Ajouter l'utilisation réussit (mais il est surligné en gris), la mise en évidence syntaxique des classes manquantes fonctionne (parfois), mais ajouter la référence échoue silencieusement.

lors de l'ajout manuel de la Référence, une erreur apparaît, expliquant pourquoi l'ajout de la référence échoue (référence circulaire). Resharper n'a pas transmis cette erreur à L'interface graphique.

0
répondu Yahoo Serious 2018-01-19 13:54:17

la plupart des problèmes causés par .net Framework. Donc allez à Propriétés du projet et changez la version .Net même que votre dll de référence.

Fait!!!

j'Espère que ça aide :)

0
répondu Chhornkimchheng 2018-04-26 06:41:15

j'ai résolu ce problème en m'assurant que mon projet partageait la même version .net Framework que les projets/bibliothèques dont il dépendait.

il s'est avéré que les bibliothèques (projets dans la solution) ont utilisé .Net 4.6.1 et mon projet utilisait 4.5.2

0
répondu Dan 2018-05-15 10:41:47