项目解决方案、命名空间和项目的关系

命名空间  时间:2021-02-28  阅读:()

一、解决方案、项目、程序集、命名空间

初学者很容易把这些概念搞混淆。先说说项目(Project ),通俗的说一个项目可以就是你开发的一个软件。在.Net下一个项目可以表现为多种类型如控制台应用程序

Windows应用程序类库(Class Library) ,Web应用程序Web Service,Windows控件等等。如果经过编译从扩展名来看应用程序都会被编译为 .exe文件而其余的会被编译为.dl l文件。既然是.exe文件就表明它是可以被执行的表现在程序中这些应用程序都有一个主程序入口点 即方法 Main()。而类库Windows控件等则没有这个入口点所以也不能直接执行而仅提供一些功能给其他项目调用。

在Visual Studio.Net中可以在"Fi le菜单中选择"neW—个"Project ' 来创建一个新的项目。例如创建控制台应用程序。注意在此时 Visual Studio 除了建立了一个控制台项目之外该项目同时还属于一个解决方案(Solution)。这个解决方案有什么用如果你只需要开发一个Hel lo World的项目解决方案自然毫无用处。但是一个稍微复杂一点的软件都需要很多模块来组成 为了体现彼此之间的层次关系利于程序的复用 往往需要多个项目每个项目实现不同的功能 最后将这些项目组合起来 就形成了一个完整的解决方案。形象地说解决方案就是一个容器在这个容器里分成好多层好多格用来存放不同的项目。一个解决方案与项目是大于等于的关系。 建立解决方案后会建立一个扩展名为.sln的文件。

在解决方案里添加项目不能再用 “neW的方法而是要在“F i l e菜单中选择“Add

Project 。 ”添加的项目可以是新项目也可以是已经存在的项目。

程序集叫Assembly。学术的概念我不想提通俗的角度来说一个项目也就是一个程序集。 从设计的角度来说也可以看成是一个完整的模块 (Module)或者称为是包(Package)。因此一个程序集也可以体现为一个 dl l文件或者exe文件。怎样划分程序集也是大有文章的不过初学者暂时不用考虑它。

命名空间(namespace)是在C++里面就有的概念。引入它主要是为了避免一个项目中可能会存在的相同对象名的冲突。这个命名空间的定义 没有特殊的要求。不过基本上来说为了保证其唯一性最好是用 uri的格式例如BruceZhang.com。这个命名空间有点像我们姓名中的姓 然后每个对象的名字则是姓名中的名。 如果有重复再国外的命名中还可以加上middle name 。那么名都为勇的 由于姓氏不同也就分开了 或者叫张勇或者叫赵勇。当然人的姓氏重复者居多所以我们为命名空间取名时尽可能的复杂一点。有许多初学者常常把一个项目就理解为一个命名空间。 其实这两者没有绝对的联系 在项目里我们也可以定义很多不相同的命名空间。 但为了用户便于使用 最好在一个项目中 其命名空间最好是一体的层次结构。在 Visual Studio里我们可以在项目中新建一个文件夹默认情况下该文件夹下对象的命名空间 应该是项目的命名空间.文件夹名”。当然 我们也可以在namespace中修改它。

命名空间和程序集名都可以在 Visual Studio 中设置。用鼠标右键单击项目名就可以弹出如下对话框

在图中 Assembly Name 就是程序集名如果经过编译则为该项 而Default目的文件名。 在建立新项目Namespace则为默认的命名空间。 在开发软件时我们要养成良 ,贝U以后新建的对象其命好的习惯 dl l文件建议其名最好与 Default后 就将这些属性设置好。 一旦设置好了

Default Namespace

名空间即为该设定的值。至于程序集名如果是

Namespace

实例演练 “Hel lo World! ”

一创建控制台应用程序 选择“Fi le菜单的

1

2'如图所示

在Location中定位你要保存的项目的路径而名字则为 "FirstExample”。该名字此时既是解决方案的名字 同时也是该项目的名字。

3、 用鼠标右键单击项目名 在弹出的对话框中将Assembly Name命名为Hel loWorld,将Default Namespace 命名为 BruceZhang.com.FirstExample 。

4、 此时Visual Studio 中已经建立了一个文件 其名为Class1 .cs(如果是Visual Studio

2005则默认为Program.cs);修改该文件的文件名为 Hel loWorld.cs,同时修改文件中的namespace,和类名如下namespace BruceZhang.com.FirstExample

{

///<summary>

///Summary description for Class1 .

///</summary>class Hel loWorld

{

///<summary>

///The main entry point for the appl ication.

///</summary>

[STAT h re a d]static void Main(string口args)

{

//

//TODO:Add code to start appl ication here

//

}

}

}

5、注意在Hel loWorld.cs中有一个Main()方法。这是因为我们建立的是控制台应用程序。在Main()方法中添加如下代码

Console.WriteLine("Hel lo World!");

Console.Read();

这里的Console是一个能对控制台进行操作的类。

6、运行。

检查保存项目的路径文件夹 FirstExample/bin/debug  已经存在了一个Hel loWorld.exe文件。

(二)为解决方案添加一个新项目

1 、在"Fi le菜单中选择"Add Project ,添加"New Project 。在对话框中选择"Class

Library "名字为Printer。至于保存路径可以放在之前建立的 FirstExample文件夹下

2、在Visual Studio右侧可以看到现在有两个项目了。仍然修改新项目的名称和默认命名空间名均为BruceZhang.com.Printer 。

3、将默认建立的Class1 .cs改名为MessagePrinter.cs,同时修改其代码为namespace BruceZhang.com.Printer

{

///<summary>

///Summary description for Class1 .

/// 〈/summary〉publ ic class MessagePrinter

{publ ic MessagePrinter()

{

//

//TODO:Add constructor logic here

//

}publ ic static void Print(string msg)

{

Console.WriteLine(msg);

}

}

}

在MessagePrinter 类中我们注意到并没有 Main()方法 因为它不是应用程序。新增加的Print()方法能够接收一个字符串然后在控制台中显示出来。

4、 编译Printer项目。 鼠标右键单击该项目名在菜单中选择"Bui ld。成功编译后找到

文件夹Printer/bin/debug 可以发现有文件BruceZhang.com.Printer.dl l

后形成的程序集文件。

5、关联这两个项目。我们希望是在FirstExample项目中用到Printer项目的Print()方法,前提是需要在FirstExample项目中添加对Printer项目的引用。右键单击 FirstExample项目的"Reference”选择"Add Refere nce”在对话框中选择"Project标签找到该项目并选中最后如图所示

6、现在就可以在FirstExample项目中使用MessagePrinter了。首先在命名空间中添

加对它的使用(Using)然后再Main()方法中调用它最后代码如下using System;using BruceZhang.com.Printer;namespace BruceZhang.com.FirstExample

{

///<summary>

///Summary description for Class1 .

///</summary>class Hel loWorld

{

///<summary>

///The main entry point for the appl ication.

///</summary>

[STAT h re a d]static void Main(string口args)

{

MessagePrinter.Print("Hel lo World!");

Console.Read();

}

}

}

7、运行。结果与前一个例子一样。

在这个例子中解决方案中就包含了两个项目一个是控制台应用程序一个是类库。 类库提供一些基本的功能如例子中的Print()方法。我们常常把一些共用的方法 放到类库中。这样其他的应用程序就可以去调用它。例如本例的控制台应用程序。如果新建的 Windows应用程序也需要这个功能就可以直接引用 MessagePrinter的Print()方法而不必重复去实现。

5771001803090012095579036822859633082

5771001803090012386576137399735760696

5771001803090013594578077579902515512

5771001803090012387577164982601818051

5771001803090012138572131 192158918326

5771001803090012359579036822361076053

57710018030900123565761352861437917425771001803090012355575087869704693279

17088100343355274101229944325833379

17088100343355275101866732938832008

17088100343356107101581 152501500522

17088100343356108101000180059871732

17088100343354295101074194142687017

17088100343356184101878660869628802

17088100343356185101775831 174086674

17088100343356109101086014373572846

170881003433561 10101 152207216014916

17088100343355237101027041605702709

17088100343355238101229364861425414

17088100343356169101862204402635718

17088100343354928101760654089788804

LOCVPS:美国XEN架构VPS七折,全场八折,日本/新加坡XEN架构月付29.6元起

LOCVPS发来了针对XEN架构VPS的促销方案,其中美国洛杉矶机房7折,其余日本/新加坡/中国香港等机房全部8折,优惠后日本/新加坡机房XEN VPS月付仅29.6元起。这是成立较久的一家国人VPS服务商,目前提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建...

Friendhosting全场VDS主机45折,虚拟主机4折,老用户续费9折

Friendhosting发布了今年黑色星期五促销活动,针对全场VDS主机提供45折优惠码,虚拟主机4折,老用户续费可获9折加送1个月使用时长,优惠后VDS最低仅€14.53/年起,商家支持PayPal、信用卡、支付宝等付款方式。这是一家成立于2009年的老牌保加利亚主机商,提供的产品包括虚拟主机、VPS/VDS和独立服务器租用等,数据中心可选美国、保加利亚、乌克兰、荷兰、拉脱维亚、捷克、瑞士和波...

raksmart:年中大促,美国物理机$30/月甩卖;爆款VPS仅月付$1.99;洛杉矶/日本/中国香港多IP站群$177/月

RAKsmart怎么样?RAKsmart发布了2021年中促销,促销时间,7月1日~7月31日!,具体促销优惠整理如下:1)美国西海岸的圣何塞、洛杉矶独立物理服务器低至$30/月(续费不涨价)!2)中国香港大带宽物理机,新品热卖!!!,$269.23 美元/月,3)站群服务器、香港站群、日本站群、美国站群,低至177美元/月,4)美国圣何塞,洛杉矶10G口服务器,不限流量,惊爆价:$999.00,...

命名空间为你推荐
伪装微信地理位置用软件 伪装微信地理位置 在相册上传图片显示所在城市还是我目前的位置?bbsxpbbsxp 2008 无法创建数据库站长故事科学家的故事200字微信如何建群微信如何建群ps抠图技巧ps抠图多种技巧,越详细越好,急~~~~~~~腾讯文章腾讯新闻的精选微信里面收藏的文章在哪里qq空间打扮QQ空间打扮人人逛街人人逛街网是正品吗服务器连接异常lol为什么总是提示服务器连接异常淘宝软文范例做微商让淘宝代写一篇软文发布招代理有效果吗
cn域名个人注册 分销主机 优惠码 国内php空间 华为网络硬盘 cn3 爱奇艺vip免费试用7天 服务器监测 吉林铁通 四川电信商城 免费ftp 国外在线代理服务器 论坛主机 贵阳电信测速 atom处理器 lamp架构 双线空间 rewritecond windowsserver2008r2 美国vpn代理 更多