你的Dll是叫DataAccessLayer么,还是指定了DataAccessLayer命名空间?
你可以用在你出错的页面加入
using DataAccessLayer;

解决方案 »

  1.   

    你是不是没有在References里面载入这个DLL文件
    References在Solution Explorer里面只有在References里面加载了这个DLL文件你才能Using 这个命名空间
      

  2.   

    谢谢大家回答我的问题.我现在的情况是这样的.
    1)首先,我是在项目中已经引用了这个DLL文件了.然后才用的using.
    2)我没有改引入进来的项目的默认的命名空间名.也就是说它是和项目是同一个名称.
    3)我有一个问题,"命名空间和类名称是不能重复"的吗? 我这里尽管没重复,但我在改来改去的过程中曾让他们重复过的.这样是不是会有问题.而且,大家没有回答我一个问题,我上面的程序难道是没有问题的吗? 我想,大家不分析这一块应该是默认程序没问题.我实在是找不出问题在哪了.现在老想可能是我这里的程序有问题.希望大家能再帮我分析一下.我用C#时间不是很长,我觉得我可能对它内部的某些机制还不太清楚.这里先谢过了.
      

  3.   

    你把DLL里面实现的函数在Windows工程项目文件里面实现,这样你就能看出问题是不是出在Dll文件上
      

  4.   

    命名空间和类名称是可以重复的。
    namespace ConsoleApplication3
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class ConsoleApplication3

    public void print()
    {
    System.Console.Out.WriteLine("hello world");
    }
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    ConsoleApplication3 ob = new ConsoleApplication3();
    ob.print();
    //
    }
    }
    }
    就编译通过,同时结果为hello world.   E:\工作目录\太原项目\WebManageSystem\businesslayer\DataBrowser.cs(7): 找不到类型或命名空间名称“DataAccessLayer(我的数据访问层的的项目的名称)”(是否缺少 using 指令或程序集引用?).
    报这个错,说明你没引用好,我建议还是好好检查一下你的命名空间。看看是否引用正确。
      

  5.   

    你是不是没有引用呀?
    就在“解决方案资源管理器“里边的“引用”上边点右键添加引用,然后再引用你自己的DLL。
      

  6.   

    我引用了,并且和你说的方式是完全一样的.然后才using的.但我现在也有一个问题,引用进来后,using的方式应该是这样的吗?
       1)using 项目名称.命名空间名;
       2)using 命名空间名;
       上面两种方式我都用了,但还是有如我题目所述的问题报错.
       另外,我发现我原先的VB.NET的项目文件都生成在bin目录下的,而现在C#的DLL都生成在了Debug下了.为什么呢?
      

  7.   

    在Build 里面有个Batch Build 可以选择发布方式Debug版本或者Release版
    这样弄大家都不知道你的问题在那,只能猜测,要不然把你的全部程序,DLL部分和项目部分的代码都贴出来,我给你编译一下看看
      

  8.   

    哦,CMonkey,真的太谢谢你了.我就担心我没有把我的问题完全叙述清楚.好吧.我把我要引用的"数据访问层"的项目中的源代码都粘到这里.而且.我刚刚看了一个贴子.叙述如下:
    ================================
    1.解决方案管理器中的引用:
      让你能找到这个模块,DLL.可以使用它.
    2.代码文件中的using,是省略你在程序中前面一大窜的命名空间.
    如果1中没有引用进来,你在2中不管怎么调用,都不可能成功.因为它根本就找不到.
    =======================================
       所以,我一直怀疑我要引用的项目生成的就有问题.在粘这个项目的代码前,我简单说一下.我做的是"三层结构"的工程.现在我是将生成好DLL的"数据访问层"的项目往业务层的项目中引入时,报这样的错误.而且,"数据访问层"的项目新建时基于的模板是"windows服务".
       我的"数据访问层"的项目的源代码如下:
    ===================================================
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.ServiceProcess;using System.Data.SqlClient;
    using System.Data.SqlTypes;
    using System.Xml;
    using System.Data.OleDb;namespace DataAccess
    {
    public class Service1 : System.ServiceProcess.ServiceBase
    {
    /// <summary> 
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Service1()
    {
    // 该调用是 Windows.Forms 组件设计器所必需的。
    InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化
    } // 进程的主入口点
    static void Main()
    {
    System.ServiceProcess.ServiceBase[] ServicesToRun;

    // 同一进程中可以运行多个用户服务。若要将
    //另一个服务添加到此进程,请更改下行
    // 以创建另一个服务对象。例如,
    //
    //   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
    //
    ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun);
    } /// <summary> 
    /// 设计器支持所需的方法 - 不要使用代码编辑器 
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    components = new System.ComponentModel.Container();
    this.ServiceName = "Service1";
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } /// <summary>
    /// 设置具体的操作,以便服务可以执行它的工作。
    /// </summary>
    protected override void OnStart(string[] args)
    {
    // TODO: 在此处添加代码以启动服务。
    }
     
    /// <summary>
    /// 停止此服务。
    /// </summary>
    protected override void OnStop()
    {
    // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
    }
    #region "GetTreeData()方法" //----------------连结数据库,通过业务层被调用,返回所要的dataview --------------
    public DataSet GetTreeData(string privateConnectionString, string sSQL,string TableName)  {  
    OleDbConnection cn;
    OleDbDataAdapter adptr=new OleDbDataAdapter();
    //OleDbCommandBuilder cmdBldr;
    try
    {
    //Check to see if this object has already been disposed
    cn=new OleDbConnection(privateConnectionString);
    DataSet ds=new DataSet();
    adptr.SelectCommand=new OleDbCommand(sSQL,cn); if (cn.State==ConnectionState.Closed)
    {
    cn.Open();
    }  

    //Depending on table name passed, Fill the new DataSet with the returned Data in a table
    if (TableName=="")
    {
    adptr.Fill(ds);
    } else
    {
    adptr.Fill(ds,TableName);
    } cn.Close(); return ds;
    } /*catch(Exception e)
    {
    MessageBox.Show(e.ToString());
    }*/
    catch ( Exception e)  
    {  
    throw e;                                         
    }  

    } public DataSet GetTreeData1()
    { // Create a new DataTable.
    DataSet myDataSet=new DataSet();
    // Create a new DataTable.
    DataTable myDataTable = new DataTable("group");
    DataColumn myDataColumn;
    DataRow myDataRow;
     
    // Create first column and add to the DataTable.
    myDataColumn = new DataColumn();
    myDataColumn.DataType= System.Type.GetType("System.Int32");
    myDataColumn.ColumnName = "GROUP_ID";
    myDataColumn.AutoIncrement = true;
    myDataColumn.Caption = "ID";
    myDataColumn.ReadOnly = true;
    myDataColumn.Unique = true;
    // Add the column to the DataColumnCollection.
    myDataTable.Columns.Add(myDataColumn);
     
    // Create second column.
    myDataColumn = new DataColumn();
    myDataColumn.DataType= System.Type.GetType("System.Int32");
    myDataColumn.ColumnName = "PARENT_ID";
    myDataColumn.AutoIncrement = false;
    myDataColumn.Caption = "ChildItem";
    myDataColumn.ReadOnly = false;
    myDataColumn.Unique = false;
    myDataTable.Columns.Add(myDataColumn);
     
    // Create third column.
    myDataColumn = new DataColumn();
    myDataColumn.DataType= System.Type.GetType("System.String");
    myDataColumn.ColumnName = "GROUP_NAME";
    myDataColumn.AutoIncrement = false;
    myDataColumn.Caption = "ParentID";
    myDataColumn.ReadOnly = false;
    myDataColumn.Unique = false;
    myDataTable.Columns.Add(myDataColumn); myDataSet.Tables.Add(myDataTable); // Create three sets of DataRow objects, five rows each, and add to DataTable.
    myDataRow = myDataTable.NewRow();
    myDataRow["GROUP_ID"] = 1;
    myDataRow["PARENT_ID"] = 0;
    myDataRow["GROUP_NAME"] = "A" ;
    myDataTable.Rows.Add(myDataRow);

    myDataRow = myDataTable.NewRow();
    myDataRow["GROUP_ID"] = 2;
    myDataRow["PARENT_ID"] = 0;
    myDataRow["GROUP_NAME"] = "B" ;
    myDataTable.Rows.Add(myDataRow);

    myDataRow = myDataTable.NewRow();
    myDataRow["GROUP_ID"] = 3;
    myDataRow["PARENT_ID"] = 1;
    myDataRow["GROUP_NAME"] = "AA" ;
    myDataTable.Rows.Add(myDataRow);

    myDataRow = myDataTable.NewRow();
    myDataRow["GROUP_ID"] = 4;
    myDataRow["PARENT_ID"] = 1;
    myDataRow["GROUP_NAME"] = "AB" ;
    myDataTable.Rows.Add(myDataRow); return myDataSet;
    }
    #endregion #region RunSQLDataSet ____ 通过传入的SQL,返回给业务层showitems()等方法一个DataSet public DataSet runSQLDataSet(string privateConnectionString, string sSQL,string TableName) 
    {  
    OleDbConnection cn;
    OleDbDataAdapter adptr=new OleDbDataAdapter();
    //OleDbCommandBuilder cmdBldr;
    try
    {
    cn=new OleDbConnection(privateConnectionString);
    DataSet ds=new DataSet();
    adptr.SelectCommand=new OleDbCommand(sSQL,cn); if (cn.State==ConnectionState.Closed)
    {
    cn.Open();
    }  

    if (TableName=="")
    {
    adptr.Fill(ds);
    } else
    {
    adptr.Fill(ds,TableName);
    }
    cn.Close();
    return ds;
    }
    catch ( Exception e)  
    {  
    throw e;                                         
    }  


    #endregion
    }
    }
      

  9.   

    代码还没仔细看,但是有个问题,你的数据访问层DLL里面怎么有一个
    static void Main()
    {
    }Windows的工程项目里面也有
    static void Main()
    {
    }
    难道你不觉的有问题吗?
      

  10.   

    CMonkey:我用C#时间不长.你提到我两个项目中都有
     static void Main()
    {
    }
    不能有对吗?我想是用项目模板生成项目时自动生成的.
      

  11.   

    晕倒,main()函数是所有程序的入口,一个程序只有一个入口,也就是只能有一个main()
    我想你的问题应该搞定了
      

  12.   

    写DLL的时候生成的项目应该是Class Library
    里面是不可能有main()的,多半你是开的一个Windows Application或者其他的什么项目
      

  13.   

    sorry,我想我的问题太幼稚了.刚开始看C#是到确实看到"main()函数是所有程序的入口,一个程序只有一个入口"这样类似的内容,用的时候却忘记了.谢谢.赶快去改我的东西.