无法从同一个命名空间导入 类

Can't import classes from same namespace

我是 .NET 的新手,我正在尝试让一个不再具有 .csproj 文件的旧程序运行。我设法从创建者那里收到了一个旧的 .sln 文件,并在 VS 中打开了解决方案。 据我所知,这是一个 Developer Web Server 项目?

问题来了。

文件夹 Smreka 中有 2 个文件,log.cssmreka.cslog.cs 包含 class 记录器的实现,我正试图将其导入到 smreka.cs。据我所知,它们都使用相同的命名空间 Bum.Iglavci.Smreka,我应该能够毫无问题地导入 Logger class。 问题是编译器就是看不到它。如果我尝试使用 using static Bum.Iglavci.Smreka.Logger; 直接导入它,我会收到错误 Feature 'using static' is not available in C# 5. Please use language version 6 or greater.

我想知道命名空间为什么看不到对方。是因为我缺少 .csproj 文件吗? Developer Web Server 甚至需要 .csproj 文件吗?如果是这样,生成一个的最佳方法是什么?

编辑: 由于有些混乱,我将尝试添加更多关于 log.cs 和 smreka.cs 的详细信息。这些文件实际上要长很多,但我认为这应该可以提供一个思路。

log.cs:

namespace Bum.Iglavci.Smreka{

public class Logger{
    public Logger(){
        
    }
    public void DoSomething(){}
}
}

smreka.cs:

namespace Bum.Iglavci.Smreka{

public class Baza{
    private Logger log;
    public Baza(){
        log = new Logger();
    }
}
}

编译器不知道 Logger 是什么 属性 private Logger log; 它指出错误 The type or namespace name 'Logger' could not be found (are you missing a using directive or an assembly reference?)

我认为命名空间放置正确,这就是为什么我觉得项目或解决方案本身有问题需要修复。

因为两个 classes 都在同一个命名空间中,所以它们已经能够相互使用。您只需执行以下操作即可访问 class。我们把Log当成class来调用另一个class.

Log class:

namespace Bum.Iglavci
{
    public class Log
    {
        public static void ExecuteDoSomething()
        {
            Smreka.DoSomething();
        }
    }
}

Smerka class:

namespace Bum.Iglavci
{
    public class Smerka
    {
        public static void DoSomething()
        {
           //execute code here
        }
    }
}

文件的 Buil Action 属性 可能设置为 None 这不会编译文件。设置为C# Compiler,这应该可以解决。

如果您不知道如何访问文件的属性。

  1. 右键单击文件
  2. 导航到列表底部的Properties
  3. Build Action 设置为 C# compiler(见图)

我没有找到简单的解决方案。我现在创建了一个新的 .net 框架应用程序项目并将文件添加到新项目中。由于某种原因,命名空间现在可以正常工作,并且文件可以在同一命名空间中看到彼此。

是的,错误是因为您没有 .csproj 文件。

此类文件包含构建项目时要编译的文件列表。仅仅有解决方案文件是不够的。

我建议阅读一些关于使用 Visual Studio 的项目和解决方案的读物: