修改 我有一个快速增长的类库,我决定将它组织一点...... 类库命名空间的结构如下:
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程序集可以解决问题,我只是不确定原因。 - 听起来有些奇怪,因为这个问题与嵌套命名空间有关。如果我使用单独的命名空间,问题就消失了。
答案 0 :(得分:2)
好的,根据您的示例和错误,它听起来像引用您的库的主应用程序无法访问晶体组件。
在主应用程序中,添加对水晶OR的引用,至少将这些程序集放在bin目录中。由于主应用程序无法找到装配的所有必要部件,因此无法使用它。
答案 1 :(得分:1)
Chris的回答让我想到了可访问的程序集,我意识到问题是什么。
Crystal程序集是Framework 2,主要应用程序是Framework 4.将目标框架更改回2修复了问题。同样我假设使用Framework 4 Crystal程序集(如果它们存在)也应该解决问题。
P.S。:我认为错误信息可能更有帮助......也许指出资源是不可访问的,而不是整个类库。 :)