无法从项目引用命名空间

时间:2017-01-11 00:58:51

标签: c# asp.net .net visual-studio asp.net-core

我的interfaces子项目中有几个文件夹。我可以“看到”其中两个,但不是第三个。显然添加了引用,否则我将无法“查看”或访问子项目中的任何名称空间。

任何想法在这里可能出错?

missing namespace reference

来自项目 Project.Data

文件 ProjectContext.cs 需要从另一个项目 Project.Interfaces 继承接口。

Project.Data 引用 Project.Interfaces

界面位于 Project.Interfaces \ Data \ IProjectContext.cs 中。

无论出于何种原因,数据目录在Visual Studio提供的自动完成中都不可见。我无法访问 Project.Interfaces.Data 命名空间。

来自 Project.Data

project.json

{
  "version": "1.0.0-*",

  "dependencies": {
"Project.Interfaces": "1.0.0-*",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"NETStandard.Library": "1.6.1",
"System.ComponentModel.Annotations": "4.3.0"
},

"frameworks": {
"netstandard1.6": {
  "imports": "dnxcore50"
}
}
}

ProjectContext.cs

namespace Project.Data
{
public class ProjectContext : DbContext
{
    public ProjectContext(DbContextOptions<ProjectContext> options) : base(options)
    {
        Database.EnsureCreated();
    }

}
}

IProjectContext.cs

namespace Project.Interfaces.Data
{
    interface IProjectContext
    {

    }
}

2 个答案:

答案 0 :(得分:3)

您似乎认为文件夹结构定义了命名空间。事实上它们完全无关紧要(尽管这是一个很好的惯例)。检查丢失的文件夹中的文件,并更改代码中的命名空间定义,可能您希望它与您的文件夹结构相匹配。

要寻找的另一件事是类/接口是否公开。

答案 1 :(得分:3)

c#中的默认访问修饰符为internal。由于您的IProjectContext界面没有修饰符,因此假设它为internal,因此其他项目无法使用。

使界面公开,您将能够在其他项目中引用它。

namespace Project.Interfaces.Data
{
    public interface IProjectContext
    {

    }
}

如果您希望界面因API原因而内部存在,则可以在InternalsVisibleTo项目的AssemblyInfo.cs文件中添加Project.Interfaces行:

[assembly: InternalsVisibleTo("Project.Data")]