使用嵌套名称空间的类库问题

时间:2011-01-04 16:57:50

标签: c# namespaces class-library

修改 我有一个快速增长的类库,我决定将它组织一点...... 类库命名空间的结构如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Web;

namespace ClassLibrary1
{
    namespace FirstNS
    {
        public class Class1
        {
            ReportDocument report = new ReportDocument();

            public static void ShowMe()
            {
                Console.WriteLine("Class1");
            }
        }
    }
    namespace SecondNS
    {
        public class Class2
        {
            public static void ShowMe()
            {
                Console.WriteLine("Class2");
            }
        }
    }
}

编译好。当我尝试通过在控制台应用程序中引用它来使用已编译的dll时,我可以使用using指令引用命名空间。但是,当我尝试构建应用程序时,它说“无法找到类型或命名空间名称'ClassLibrary1'......”。

我已经发现取出CrystalDecisions程序集可以解决问题,我只是不确定原因。 - 听起来有些奇怪,因为这个问题与嵌套命名空间有关。如果我使用单独的命名空间,问题就消失了。

2 个答案:

答案 0 :(得分:2)

好的,根据您的示例和错误,它听起来像引用您的库的主应用程序无法访问晶体组件。

在主应用程序中,添加对水晶OR的引用,至少将这些程序集放在bin目录中。由于主应用程序无法找到装配的所有必要部件,因此无法使用它。

答案 1 :(得分:1)

Chris的回答让我想到了可访问的程序集,我意识到问题是什么。

Crystal程序集是Framework 2,主要应用程序是Framework 4.将目标框架更改回2修复了问题。同样我假设使用Framework 4 Crystal程序集(如果它们存在)也应该解决问题。

P.S。:我认为错误信息可能更有帮助......也许指出资源是不可访问的,而不是整个类库。 :)