【发布时间】:2016-02-23 08:32:24
【问题描述】:
我有一个包含大约 14 个项目的解决方案,但在尝试在其中两个项目之间建立链接时遇到问题:
- Argus.Web(一个网络应用项目)
- Argus.Domain.Office.Command(从 API 读取数据并将数据存储在本地 SQL Server 数据库中的项目)
- (我还提到了一个名为 Argus.Domain 的项目,因为它可能是问题的一部分,尽管它在我的代码中的其他类似位置没有引起问题。)
Argus.Domain.Office.Command 有一个上下文 (argusOfficeContext) 将它链接到我想从 Argus.Web 访问的数据库。 (此上下文在其他情况下也很有效。)当我尝试在 Argus.Web 的一个类中添加一个 using 指令来引用上下文的命名空间时,我得到了标题中的错误。
这是我正在搭建的类(在 Argus.Web 中)发生错误的地方:
using Argus.Domain.Office.Command.Models;
namespace Argus.Web
{
public partial class Calculator
{
}
}
红色的摆动线只出现在使用中的“Office”下,完整的错误是“名称空间'Argus.Domain'中不存在类型或名称空间'Office'。您是否缺少程序集引用? ”。
我检查了 Argus.Domain.Office.Command 项目是从 Argus.Web 引用的,当我检查 Argus.Web 构建依赖项时,我看到 Argus.Domain.Office.Command(以及其他项目 Argus.Domain ),并且它被设置为在 Argus.Web 之前构建。当我签入 Argus.Web References > Projects 时,项目 Argus.Domain.Office.Command 旁边有一个勾号,我得出结论认为它被引用了。
根据 Peter D 的评论,我检查了命名空间声明,它在项目 Argus.Domain.Office.Command 中声明。
(可能无关紧要:)这是我要引用的类
using System.Data.Entity;
using Argus.Domain.Office.Command.Models.Mapping;
namespace Argus.Domain.Office.Command.Models
{
public partial class argusOfficeContext : DbContext
{
static argusOfficeContext()
{
Database.SetInitializer<argusOfficeContext>(null);
}
public argusOfficeContext()
: base("Name=argusOfficeContext")
{
}
public DbSet<Location> Locations { get; set; }
public DbSet<LocationPeriodReport> LocationPeriodReports { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new LocationMap());
modelBuilder.Configurations.Add(new LocationPeriodReportMap());
}
}
}
这两个项目都以 .NET Framework 4.5.1 为目标,我已经在各个地方寻找答案,但以下其他问题的修复似乎无法解决我的问题。我正在运行 Visual Studio 2015。其他问题供参考:
- 'Using' not detecting namespace-checked client profiling already
- Visual Studio 2010 suddenly can't see namespace?
- Visual Studio 2015 C# Not finding references
如果有人能建议我做错了什么,我将不胜感激。我检查了许多其他帖子以寻找答案,但是如果您可以提供指向我错过的答案的链接,那也很棒。
【问题讨论】:
-
只是为了迂腐,您的意思是“使用 directive”而不是“使用 statement”。它们是两个完全不同的东西。
-
正确,更正,非常感谢。
-
“我不相信我缺少汇编参考” -- 计算机不是根据信念运行的。假设命名空间存在于anywhere,您将缺少对声明它的程序集的引用。 “我可以看到它被正确引用” -- 你确定没有找到的命名空间实际上是在你认为应该提供它的程序集中声明的吗?最重要的是,这 is 与 Stack Overflow 上所有其他“未找到命名空间”问题完全相同;它们总是归结为同一件事:通过某种机制未能包含声明命名空间的程序集。
-
嗨,彼得,感谢您使用松散的措辞,我做了一个修改,希望它更有用。针对您评论的后半部分,有很多关于这种错误的问题,但是我还没有找到一个可以用来解决我的问题的答案,否则我不会暴露通过发布这个问题来批评自己。如果您能指出一个可以为我的特定问题提供解决方案的问题,我将不胜感激。否则,我建议它不是完全重复的。再次感谢。
标签: c# .net visual-studio namespaces