【问题标题】:Is it possible for two VS2008 C# class library projects to share a single namespace?两个 VS2008 C# 类库项目是否可以共享一个命名空间?
【发布时间】:2010-06-01 00:27:39
【问题描述】:

我试图在一个解决方案中的两个项目之间共享一个公共命名空间。这些项目是“蓝图”和“存储库”。蓝图包含整个应用程序的接口,并作为应用程序结构的参考。

在蓝图项目中,我有一个带有以下声明的接口:

namespace Application.Repositories{
    public interface IRepository{
        IEntity Get(Guid id);
    }
}

在 Repositories 项目中,我有一个类如下:

namespace Application.Repositories{
    public class STDRepository: IRepository
    {
        STD Get(Guid id){
             return new SkankyExGirlfriendDataContext()
                           .FirstOrDefault<STD>(x=>x.DiseaseId == id);
        }
    }
}

但是,这不起作用。 Repositories 项目具有对 Blueprint 项目的引用。我收到 VS 错误:“找不到类型或命名空间名称 'IRepository'(您是否缺少 using 指令或程序集引用?) - 通常,这很容易修复,但添加 using 语句没有意义因为它们具有相同的命名空间。无论如何我尝试了它,但它没有工作。引用已添加,并且没有引用该接口的代码行,两个项目都编译成功。我迷路了。我已经搜索过什么也没找到,所以我假设我正在做的事情从根本上是错误的......但我不知道它是什么。所以,我希望得到一些关于如何解决这个问题的解释或指导。希望大家帮忙。

注意:我想这样做并将接口保留在同一个命名空间下的原因是因为我想要一个可靠的项目来保留所有接口,以便对完整架构有参考应用程序。我考虑了一些变通方法,例如将所有接口放在 Blueprint.Application 命名空间而不是应用程序命名空间中。但是,这需要我在应用程序的几乎每一页上都写下 using 语句……我的手指会感到疲倦。再次感谢大家...

【问题讨论】:

  • 在 Repositories 项目中工作时,您是否在 VS IntelliSense 中看到 IRepository?
  • 确保 Repositories 项目具有对 Blueprint 项目的引用。我自己试了一下,对我有用。

标签: c# .net visual-studio-2008 namespaces multiple-projects


【解决方案1】:

这是可能的。

例如,mscorlib.dll 和 System.dll 是两个不同的 C# 项目,它们都在 System 命名空间中定义类。 (除其他外)

如果Repositories 项目未引用Blueprint,则会发生此错误。

【讨论】:

  • 如前所述,存储库项目确实引用了蓝图。错误仍然存​​在。
  • 你确定吗?蓝图中的类是否在 IntelliSense 中显示?尝试删除引用并重新添加它(从“项目”选项卡中)
【解决方案2】:

好的 - 所以,我将 SLaks 标记为正确,因为他的回答是正确的,并且可能会成为其他任何人在未来查看此问题的解决方案。我的问题与我的解决方案中的其他 6 个项目文件有关。我卸载了它们并仅使用两个发布的实例重建了解决方案,突然我的 Intellisense 开始工作。尽管这两个项目没有错误,但其他项目中的错误导致编译出现问题。该死的...谢谢大家。

【讨论】:

    【解决方案3】:

    对于您要归档的内容,您还可以尝试将所有内容放入一个程序集中并将所有类声明为internal 而不是public。这样,使用它的程序只会看到接口。您将必须创建一组工厂类,这些类根据某些参数创建特定接口的实例。这确实是要走的路,因为小组件会导致大量开销。请参阅Microsoft Performance Guidelines

    【讨论】:

    • 我取出了 AssemblyInfo.cs 并在每个项目中添加了一个指向单个程序集文件的链接,因此我希望它们将作为一个程序集编译。这不准确吗?
    猜你喜欢
    • 2011-08-16
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多