Snarl C#API を使用して通知をsnarlに送信しています。
これで、上記のURLのコンテンツをSnarlNetwork.cs
という名前のファイルに保存しました。また、test.cs
ファイルのコンテンツは次のとおりです。
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");
}
}
}
}
csc test.cs
を使用してtest.csファイルをコンパイルしようとすると、次のエラーが表示されます。
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?)
だから、ここで私が間違っているのは、私によればusing directive
が欠けていないからです。
これが問題です:
C:\Users\Noob\csharp>csc test.cs
DLLへの参照を追加していません。次のようなものが必要です。
C:\Users\Noob\csharp>csc test.cs /r:SnarlNetwork.dll
(またはアセンブリが呼び出されるもの)。
または、別のライブラリとして入手していない場合は、両方のファイルをコンパイルするだけです:
C:\Users\Noob\csharp>csc test.cs SnarlNetwork.cs
アセンブリをコンパイルしていないがwant toの場合、次を使用できます。
csc /target:library /out:SnarlNetwork.dll SnarlNetwork.cs
csc Test.cs /r:SnarlNetwork.dll
(実際、この特定のケースでは出力ファイルを指定する必要はありませんが、それでもなお明確です...)
。NET Framework 4.5を使用していましたが、新しいライブラリには。NET Framework 4.5.2があり、ビルドしようとしたときに同じ問題が発生しました。プロジェクトを4.5から4.5.2(ライブラリと同じ)に更新することで解決しました。
編集:ああ、無視してください、あなたはVisual Studioを使用していません。
プロジェクトへの参照を追加しましたか?
この種のもののように:
.NET Frameworkの「クライアントプロファイル」が原因である可能性があります。 .NETの「フルバージョン」を使用してみてください。
これは通常、usingステートメントはあるが、名前空間を定義するアセンブリを参照するのを忘れたときに起こります。
しかし、あなたの場合、名前空間はプロジェクト内のファイルで定義されているため、snarlnetwork.csファイルについてコンパイラーに伝えるのを忘れています。
cscコンパイラの例 を参照してください
MVCプロジェクトでこのエラーが発生しました。そして、長い調査の後、メインプロジェクトで参照したクラスの一部を含む.csファイルのビルドアクションが「コンテンツ」に設定されていることがわかりました...
「コンテンツ」->「コンパイル」に変更すると、エラーは消えました。
プロジェクトが依存するプロジェクト/ライブラリと同じ.Net Frameworkバージョンを共有するようにすることで、これを解決しました。
.Net 4.6.1を使用しているライブラリ(ソリューション内のプロジェクト)が判明し、私のプロジェクトでは4.5.2を使用していました
ほとんどの問題は、.NET Frameworkが原因です。そのため、プロジェクトのプロパティに移動して、参照dllと同じ.Netバージョンを変更します。
完了!!!
それが助けであることを願っています:)
最初に新しいソリューションを引き出して開始した後、同様の問題が発生しました。最初にプロジェクトをクリーニングすることで、Visual Studioで修正されました。次に、パッケージを復元します。再度ビルドしたとき、タイプや名前空間のエラーはもうありませんでした。
使用されたcsファイルがプロジェクトフォルダ内にある場合、同じエラーが発生しましたが、親プロジェクトの.csprojから参照されませんでした。 Intellisenceはプロジェクトフォルダー内でこのファイルを表示しますが、.csprojの参照が欠落しているため、コンパイラーはこのファイルを表示しません
また、参照がないためにこのエラーが発生しました。私が気づかなかった理由は、Resharperがusingとreferenceを追加することを提案しているからです。使用を追加すると成功しますが(灰色で強調表示されます)、欠落しているクラスの構文強調表示は機能します(場合によっては)が、参照の追加は黙って失敗します。
参照を手動で追加すると、エラーがポップアップ表示され、参照の追加が失敗する理由が説明されます(循環参照)。 ResharperはこのエラーをGUIに渡しませんでした。
Gitからプロジェクトを複製し、初めてソリューションを直接ビルドするときに同じ問題が発生しました。その代わりに、エクスプローラーのローカルリポジトリに移動し、ソリューションファイル(.sln)をダブルクリックして問題を解決しました。
System.Webへの参照を追加して、この問題を解決しました。