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
.
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...)
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).
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:
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.
cela pourrait être dû au" profil client " du cadre.net. Essayez d'utiliser la "version complète" de .NET.
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.
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.
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
j'ai résolu ce problème en ajoutant la référence au système.Web.
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.
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 :)
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