web-dev-qa-db-fra.com

Pourquoi le message d'erreur CS0246 s'affiche-t-il: le nom du type ou de l'espace de nom est introuvable?

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

Maintenant, j'ai enregistré le contenu de l'URL ci-dessus dans un fichier nommé SnarlNetwork.cs et le contenu de mon fichier test.cs est le suivant:

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, lorsque j'essaie de compiler mon fichier test.cs en utilisant csc test.cs, le message d'erreur suivant s'affiche:

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

Alors, qu'est-ce que je fais de mal ici parce que, selon moi, il ne manque aucun using directive.

24
RanRag

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

Sinon, si vous ne l'avez pas sous forme de bibliothèque séparée, compilez simplement les deux fichiers:

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

Si vous n'avez pas compilé d'assembly mais que 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 n'est pas nécessaire dans ce cas particulier, mais cela reste plus clair ...)

13
Jon Skeet

J'utilisais .NET Framework 4.5 mais ma nouvelle bibliothèque avait .NET Framework 4.5.2 et j'ai eu le même problème lorsque j'ai essayé de générer. Je l'ai résolu en mettant à jour mon projet de 4.5 à 4.5.2 (identique à ma bibliothèque).

18
Actek14

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 les dll référencées ont été compilées avec la version 4.6.1 . Ainsi, j'ai mis à jour la version de mon projet.  enter image description here

7
Vishwa G

Edit: Oh, ignorez-moi, vous n'utilisez pas Visual Studio.

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

Comme dans ce genre de chose:

enter image description here

7
James Wood

Cela peut être dû au "profil client" du .NET Framework . Essayez d'utiliser la "version complète" de .NET.

3
wely.lau

Cela m’arrive généralement lorsque j’ai une instruction using mais que j’ai oublié de faire référence à l’assemblée qui définit l’espace de nommage.

Mais dans votre cas, comme l’espace de noms est défini dans un fichier de votre projet, vous avez oublié de dire au compilateur le fichier snarlnetwork.cs.

Voir exemples de compilateur csc

2
Sam Axe

J'ai eu cette erreur sur un projet MVC. Et après une longue recherche, j'ai découvert que le fichier .cs contenant certaines des classes que j'ai référencées dans le projet principal avait un Build Actions défini sur "Content" ... 

Après avoir changé "Contenu" -> "Compiler" l'erreur a disparu.

1
Stefan Michev

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 de la solution) utilisaient .Net 4.6.1 et mon projet utilisait la version 4.5.2.

1
Dan

la plupart des problèmes provoqués par .NET Framework. Il suffit donc d'aller dans les propriétés du projet et de changer la version .Net de la même façon que votre dll de référence. 

Terminé!!!

J'espère que c'est de l'aide :)

1
Chhornkimchheng

J'ai eu la même erreur lorsque le fichier cs utilisé était situé dans le dossier du projet, mais ne faisait pas référence à partir de .csproj du projet parent. Intellisence voit ce fichier dans le dossier du projet, mais le compilateur ne le voit pas car il manque une référence dans .csproj

0
AdvanTiSS

J'ai également eu cette erreur en raison d'une référence manquante .. La raison pour laquelle je n'ai pas remarqué, c'est parce que Resharper propose d'ajouter un utilisateur et une référence. L'ajout de using réussit (mais il est surligné en gris), la surbrillance de la syntaxe des classes manquantes fonctionne (parfois), mais l'ajout de la référence échoue en mode silencieux.

Lors de l'ajout manuel de la référence, une erreur s'affiche, expliquant pourquoi l'échec de l'ajout de la référence (référence circulaire). Resharper n'a pas transmis cette erreur à l'interface graphique.

0
Yahoo Serious

J'ai résolu ce problème en ajoutant la référence à System.Web.

0
maxspan