我在做一个信息管理的小项目,刚开始做的时候,为了边做边运行,就把项目做到ROOT根目录下了,就象这样:
默认:http://localhost/WebApplication,
我改成:http://localhost
这样,用户在访问的时候就不用在地址后面再打子站点的名字了,我是这样想的。不过带来一个问题,就是项目的命名空间都变成localhost了,我发贴问了,改了项目的属性,将命名空间改成了我想要的。
后来,我感觉有必要再加几个子系统,主要是对项目中的ASPX文件进行分组,便于管理。于是又在原来的解决方案里加了两个项目,这又带来另一个问题:那就是新建的项目命名空间又成了项目名了,而我需要引用原来根目录下面的一个类,是连接数据库用的,代码如下:
using System;
using System.Data;
using System.Data.SqlClient;namespace Thri_Sys
{
    /// <summary>
    /// DataConnection 的摘要说明。创建一个公用的类,用于各种场合下的数据连接。
    /// </summary>
    public class DataConnection
    {
        string connStr="Server=(local);DataBase=Thri_Sys;Integrated Security=true;";
    SqlConnection conn;
    public DataConnection()
    {
     //
// TODO: 在此处添加构造函数逻辑
//
conn=new SqlConnection(connStr);
}
//Conn属性。
public SqlConnection Conn
{
get{return conn;}
}
//Open方法。
public void Open()
{
conn.Open();
}
//Close方法。
public void Close()
{
conn.Close();
}
}
}
于是我必须在每次添加新页的时候,都得改命名空间。
在这样的情形下做了一阵子,有时候在编译的时候,会出现:
“在多处定义了“DataConnection””之类的信息,不过也能编译成功。
但是,当我想把这个解决方案挪到另一台机器上做的时候,在VisualStudio却出现了无法加载刚开始时建在根目录下的那个项目的情况。我估计可能是原来机器上的这个项目能够对应到IIS的根目录下,但移动到新机器后,却需要到一个子文件夹中去找,就找不到了。
各位高手,我可能说得太罗嗦,不过我热切盼望能看明白的高手给我指点一下,我上面的做法有哪些地方不妥吗?

解决方案 »

  1.   

    按我的习惯,可以把DataConnection及其它公用的类放在一个单独的项目里,然后指定一个统一命名空间,比如叫Thri_Sys.Component。
    然后在其它项目里添加对这个Component的项目进行引用,并且在每个类的前面加上:
    using Thri_Sys.Component
      

  2.   

    effun(一风) ( ) 信誉:100 呵呵,一样!!!!
      

  3.   

    再问一下effun,在项目里引用一个项目,和在类前面加上USING语句,它们有什么区别?我一直以为是一样的。
      

  4.   

    是说 using (.....) {...} 吗?
    MSDN里有详细的说明,你可以查一下,大概意思就是说被using的这个变量在程序执行到using的范围以外就自动被dispose了,而不需要等到垃圾回收周期。被uisng的这个变量的类型必须实现IDispose接口。