无法从同一个命名空间导入 类
Can't import classes from same namespace
我是 .NET 的新手,我正在尝试让一个不再具有 .csproj 文件的旧程序运行。我设法从创建者那里收到了一个旧的 .sln 文件,并在 VS 中打开了解决方案。
据我所知,这是一个 Developer Web Server
项目?
问题来了。
文件夹 Smreka
中有 2 个文件,log.cs
和 smreka.cs
。 log.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
,这应该可以解决。
如果您不知道如何访问文件的属性。
- 右键单击文件
- 导航到列表底部的
Properties
- 将
Build Action
设置为 C# compiler
(见图)
我没有找到简单的解决方案。我现在创建了一个新的 .net 框架应用程序项目并将文件添加到新项目中。由于某种原因,命名空间现在可以正常工作,并且文件可以在同一命名空间中看到彼此。
是的,错误是因为您没有 .csproj 文件。
此类文件包含构建项目时要编译的文件列表。仅仅有解决方案文件是不够的。
我建议阅读一些关于使用 Visual Studio 的项目和解决方案的读物:
我是 .NET 的新手,我正在尝试让一个不再具有 .csproj 文件的旧程序运行。我设法从创建者那里收到了一个旧的 .sln 文件,并在 VS 中打开了解决方案。
据我所知,这是一个 Developer Web Server
项目?
问题来了。
文件夹 Smreka
中有 2 个文件,log.cs
和 smreka.cs
。 log.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
,这应该可以解决。
如果您不知道如何访问文件的属性。
- 右键单击文件
- 导航到列表底部的
Properties
- 将
Build Action
设置为C# compiler
(见图)
我没有找到简单的解决方案。我现在创建了一个新的 .net 框架应用程序项目并将文件添加到新项目中。由于某种原因,命名空间现在可以正常工作,并且文件可以在同一命名空间中看到彼此。
是的,错误是因为您没有 .csproj 文件。
此类文件包含构建项目时要编译的文件列表。仅仅有解决方案文件是不够的。
我建议阅读一些关于使用 Visual Studio 的项目和解决方案的读物: