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
.
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 ...)
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).
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:
Cela peut être dû au "profil client" du .NET Framework . Essayez d'utiliser la "version complète" de .NET.
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.
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.
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.
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 :)
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
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.
J'ai résolu ce problème en ajoutant la référence à System.Web.