Ошибка "Пространство имен не найдено" при попытке компиляции

Обновлено: изменение имени класса или имени пространства имен, чтобы пространство имен и класс не имели одинакового имени, не решает эту проблему.

У меня есть этот супер простой код:

Программа.cs:

using System;
using CodeCleaner;

class Program
{

    private static void Main(string[] args)
    {
        Console.WriteLine("DocTypeChecker instantiated");

        var codeCleaner = new CodeCleaner.CodeCleaner();
    }
}

CodeCleaner.cs:

using System;

namespace CodeCleaner
{
    public class CodeCleaner
    {

        public CodeCleaner()
        {
            Console.WriteLine("CodeCleaner instantiated");
        }

    }
}

Это вызывает следующую ошибку, когда я пытаюсь скомпилировать при запуске $ csc Program.cs:

Program.cs(4,7): error CS0246: The type or namespace name 'CodeCleaner' could not be found (are you missing a using directive or an assembly reference?).

Я определенно не пропускаю директиву использования для CodeCleaner, но что она означает с assembly reference, я понятия не имею. Другие решения в Интернете не помогли мне в этом случае. Кто-нибудь знает проблему здесь?

Я думаю, что проблема в том же имени для пространства имен и имени класса.

vik_78 08.04.2019 17:44

Это не проблема. Я попытался изменить имя пространства имен на NCodeCleaner, и проблема не устранена (затем написано namespace name 'NCodeCleaner' not found), такая же проблема.

erol_smsr 08.04.2019 17:48

CodeCleaner находится в той же сборке, что и Program? Если нет, то сборка программы должна ссылаться на сборку, в которой есть CodeCleaner.

Loring 08.04.2019 17:53

Если пространство имен и имена классов совпадают, это может вызвать проблемы, но не в этом случае, когда он полностью использует пространство имен и имя класса вместе, например: new CodeCleaner.CodeCleaner()

Ashkan Mobayen Khiabani 08.04.2019 17:53

@Loring Я понятия не имею, что я новичок в C#. Есть файл под названием ProjectName.AssemblyInfo.cs, в котором есть куча информации, например AssemblyFileVersionAttribute(1.0.0.0) и т. д.

erol_smsr 08.04.2019 17:56

@erol_smsr Какую IDE вы используете?

Loring 08.04.2019 18:07

@Loring Код Visual Studio. Об этом есть пример, но речь идет об установке пакета MySQL с использованием NuGet, что все усложняет. Мне просто нужно, чтобы пространство имен работало, которое я сделал сам, это не пакет NuGet или что-то в этом роде.

erol_smsr 08.04.2019 18:08

просто используйте одно и то же пространство имен для вашего класса Program

german1311 08.04.2019 19:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
455
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Запуск csc Program.cs не приведет к компиляции CodeCleaner.cs, поэтому в вашей сборке будет отсутствовать класс и пространство имен CodeCleaner. Использование csc Program.cs CodeCleaner.cs должно помочь.

Я попробую это и обновлю соответственно. Но допустим, я хочу добавить более 1 файла, то есть у меня есть 10 пространств имен и классов. Нужно ли мне перечислять все файлы пространств имен, которые я использую?

erol_smsr 08.04.2019 19:46

@erol_smsr Нет, вы можете использовать csc *.cs или csc -recurse:*.cs, если вам также нужно скомпилировать подкаталоги.

Michaili 08.04.2019 19:58

Спасибо! Я только что нашел его в документах .NET и увидел ваш комментарий. Это решило проблему :)

erol_smsr 09.04.2019 09:40

Другие вопросы по теме