Почему я получаю ошибку CS0246: имя типа или имени не найдено?
Я использую Snarl С# 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");
}
}
}
}
Теперь, когда я пытаюсь скомпилировать свой файл test.cs с помощью csc 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
.
Ответы
Ответ 1
В этом проблема:
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
Если вы не скомпилировали сборку, но хотите, вы можете использовать:
csc /target:library /out:SnarlNetwork.dll SnarlNetwork.cs
csc Test.cs /r:SnarlNetwork.dll
(На самом деле указание выходного файла в этом конкретном случае не требуется, но оно все еще яснее...)
Ответ 2
Я использовал .NET Framework 4.5, но моя новая библиотека имела .NET Framework 4.5.2, и я получил ту же проблему, когда пытался создать. Я решил это, обновив свой проект от 4.5 до 4.5.2 (так же, как и в моей библиотеке).
Ответ 3
Я решил эту проблему, обновив Target Framework в настройках приложения проекта. Проект компилировался с .net Framework версии 4.5.1, но библиотеки DLL, на которые ссылались, были скомпилированы с версией 4.6.1. Так что обновили версию моего проекта. ![enter image description here]()
Ответ 4
Редактировать: О, игнорируйте меня, вы не используете Visual Studio.
Вы добавили ссылку на свой проект?
Как в таких вещах:
![enter image description here]()
Ответ 5
Возможно, это связано с "профилем клиента".NET Framework.
Попробуйте использовать "полную версию".NET.
Ответ 6
Обычно это происходит со мной, когда у меня есть оператор using, но забыл ссылаться на сборку, которая определяет пространство имен.
Но в вашем случае, поскольку пространство имен определено в файле в вашем проекте, вы забыли сообщить компилятору о файле snarlnetwork.cs.
См. примеры компилятора csc
Ответ 7
У меня была эта ошибка в проекте MVC. И после долгого исследования я узнал, что файл .cs, содержащий некоторые из классов, на которые я ссылался в основном проекте, имеет действие "Действия сборки", которое содержит "Содержимое"...
После изменения "Содержимое" → "Скомпилировать" ошибка исчезла.
Ответ 8
большинство проблем вызвано .NET Framework. Так что просто перейдите к свойствам проекта и измените .Net версию так же, как ваша ссылка DLL.
Готово!!!
Надеюсь, это поможет :)
Ответ 9
Я решил эту проблему, убедившись, что мой проект использует ту же версию .Net Framework, что и проекты/библиотеки, от которых он зависит.
Оказалось, что библиотеки (проекты в рамках решения) использовали .Net 4.6.1, а мой проект использовал 4.5.2
Ответ 10
У меня была такая же ошибка, когда используемый файл cs находился внутри папки проекта, но не ссылался на .csproj родительского проекта.
Intellisence видит этот файл внутри папки проекта, но компилятор не видит его из-за отсутствия ссылки в .csproj
Ответ 11
Я решил эту проблему, добавив ссылку на System.Web.
Ответ 12
Я также получил эту ошибку из-за отсутствия ссылки.
Я не заметил, потому что Resharper предлагает добавить использование и ссылку. Добавление успешного использования (но оно выделено серым цветом), подсветка синтаксиса отсутствующих классов работает (иногда), но добавление ссылки не работает.
При ручном добавлении ссылки появляется всплывающее сообщение, объясняющее, почему добавление ссылки не выполняется (круговая ссылка). Resharper не передал эту ошибку в GUI.
Ответ 13
У меня возникла та же проблема, когда я клонировал свой проект из Git и впервые собрал решение. Вместо этого перейдите в локальный репозиторий в проводнике и дважды щелкните файл решения (.sln), чтобы решить мою проблему.