一、解决方案、项目、程序集、命名空间
初学者很容易把这些概念搞混淆。先说说项目(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
目前云服务器市场竞争是相当的大的,比如我们在年中活动中看到各大服务商都找准这个噱头的活动发布各种活动,有的甚至就是平时的活动价格,只是换一个说法而已。可见这个行业确实竞争很大,当然我们也可以看到很多主机商几个月就消失,也有看到很多个人商家捣鼓几个品牌然后忽悠一圈跑路的。当然,个人建议在选择服务商的时候尽量选择老牌商家,这样性能更为稳定一些。近期可能会准备重新整理Vultr商家的一些信息和教程。以前...
bgp.to在对日本东京的独立服务器进行6.5折终身优惠促销,低至$120/月;对新加坡独立服务器进行7.5折终身优惠促销,低至$93/月。所有服务器都是直连国内,速度上面相比欧洲、美国有明显的优势,特别适合建站、远程办公等多种用途。官方网站:https://www.bgp.to/dedicated.html主打日本(东京、大阪)、新加坡、香港(CN)、洛杉矶(US)的服务器业务!日本服务器CPU...
商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...