当我们用VS开发一个项目的时候,首先应该清楚用VS这个IDE生成的一些文件和文件夹是什么意思,起什么作用,什么场合下使用。
因为我使用的是VS2015,就以这个为例来进行一些说明:
首先要做的是更改你的操作系统,把隐藏的文件、文件夹显示出来,以完整的显示VS在生成一个项目时的完整文件、文件夹结构。
1、首先看到的是.sln文件和隐藏的.suo文件(.vs/你的解决方案名/版本/.suo)
Net解决方案下 .sln文件和.suo文件的解释:
When a Web site is created, a solution file (.sln) and a hidden solution user options file (.suo) are created. By default, these files are created in the My Documents/Visual Studio 2005/Projects folder. bcoz they are not required in the deployed website.
SLN ( own's the following details):
* A list of the projects that are to be loaded into Visual Studio 2005
* A list of project dependencies
* Microsoft Visual SourceSafe information
* A list of add-ins that are available
SUO ( own's the following files):
* The task list
* Debugger break points and watch window settings
* Visual Studio window locations
Visual Studio采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息
从而在每次继续开发任务时,不会因开发环境而分散精力;
*.sln:(Visual Studio Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。比如是生成Debug模式,还是Release模式,是通用CPU还是专用的等.ps:就是打开文件的索引,正确引导你进入环境,进入工程!
*.suo: (solution user options) 解决方案用户选项记录所有将与解决方案建立关联的选项,
以便在每次打开时,它都包含您所做的自定义设置。比如VS布局,项目最后编译的而又没有关掉的文件(下次打开时用)
ps:大概就是保存一些与代码本身无关的一些配置.
*.suo 是一种文件的格式。它是很重要的文件,*.suo 解决方案用户选项,记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含用户所做的自定义设置。
它储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件(下次打开时用)等,以便于下一次你打开Visual Studio可以恢复这些设置,因此不要随便删除,所以不要管它们。 其实上面英文中解释已经很清楚了,要申明的是PDB中不带断点信息.
其中,VS布局包括:监视器1234的变量列表、断点标记及开关状态、输出窗口错误窗口等的分布及其悬浮状态,还有项目卸载状态标记。
*.suo文件偶尔会被破坏,从而在构建和编辑应用程序时出现意想不到的结果。如果Visual Studio对于每个解决方案不稳定,就应删除.suo文件。下次打开解决方案时,Visual Studio会重建它。总结:
sln和suo文件共同组成了解决方案的记录和配置,VS解决方案中各种配置都存在这里,具体的每一个细节就不一一列举,以上可以给大家一个整体的认识。
但是你需要清楚一个事实,那就是,sln和suo只是一个记录解决方案的相关信息的,详细的项目信息,在其他的文件中,这两个文件只是起一个组织的作用,将各个信息凝聚在一起,从而形成一个解决方案,方便项目开发。我们也没有必要细细的研究每一个细节,只不过在此有了这个整体上的认识,大家知道平时使用VS的基本工作记录都存于此文件中。
所以,也不要随意的删掉这个你看似没用的文件,删掉代码也不会丢失,但是,有时候环境配置好后,使用也比较方便,对于这两个文件,没必要动它。为了减少项目文件的大小,和这两个文件没有关系,但是如果操作不当,会导致解决方案打不开。那么解决办法就只有重建项目,然后导入代码文件了,只是会浪费一些时间而已,又要重新组织项目文件。
这两个文件是很基本的,大小都不大,但是对于组织解决方案确实起了很大的作用,建议不要随意手动去更改,在VS中操作后自然会对文件修改。
2、接下来应该是一个一个的项目,windows下是以一个文件夹表示一个项目。
Form1.cs Form1.Designer.cs Program.cs
1. 创建 Windows 窗体项目时,默认情况下,C# 会将一个窗体添加到项目中,并为其命名为 Form1。表示该窗体的两个文件称为 Form1.cs 和 Form1.Designer.cs。Form1.cs 中写入的是你自己的代码;Designer.cs 文件是C# Windows 窗体设计器自动写入代码的文件,这些代码用于实现所有通过从“工具箱”中拖放控件执行的操作。
Designer.cs 文件包含将控件拖动到窗体、在“属性”窗口中设置属性等操作时“窗体设计器”写入的源代码。通常,根本不应该手动编辑此文件。
2. 一但当你自己动手修改了Designer.cs 文件, 或者是你在学习时, 拷贝了别人的Designer.cs 文件, 反正只要你的Form设值只要有一点点对不上Designer.cs 文件, C#将不会执行Designer.cs 文件.
这就导致你的提示InitializeComponent不存在,但是对应的Form1.Designer.cs中有该方法。
解决办法是重做一个Form, 让VS重新生成Designer.cs 文件,除非你特别熟悉Designer.cs 文件与Form的关系。
Form1.cs和Form1.Designer.cs其实是一个类,Visual Studio为了让我们方便管理,用partial关键字把窗体类给拆开了,Form1.Designer.cs存放的是窗体的布局, 你的窗体定义了哪些控件,那些控件的名字、属性等等,都是存放在Form1.Designer.cs里面的,而Form1.cs则是用来存放处理方法的, 比如你的按钮点击事件绑定了Button_Click这个方法,就会出现在Form1.cs里 其实在早期版本的Visual Studio里,是没有Form1.Designer.cs的,窗体的设计类和逻辑类全在一个文件里。 那么好处就显而易见了:便于管理。让你编程的时候能够更加直观。
3.Program.cs是程序入口,也就是Main函数。
3、.cs .csproj .resx
.cs:C Sharp Source File
Form1.csproj文件大家应该不会陌生,那就是C#项目文件的扩展名,它是“C Sharp Project”的缩写。那么它究竟是给谁用的呢?那是给开发工具用的,例如我们在熟悉不过的Visual Studio,以及大家可以没有接触过,但是应该都听说过的MSBuild.exe。Visual Studio会根据csproj里的XML定义来管理项目文件以及相关其他一些种类非常丰富的数据及操作,MSBuild也会根据csproj文件来得知编译这个项目需要有哪些依赖,默认输出路径,Pre-Build和Post-Build需要哪些操作等等。Visual Studio和MSBuild都是开发工具,这就是csproj存在的唯一意义:为“开发环境”提供信息。而到了运行环境中,根本不会有人(操作系统?)关心所谓的csproj文件——也就是“程序是哪里来的”。
Form1.resx: (窗体资源文件)你在设计窗体时所嵌入的资源, 用来存放你的窗体资源的,比如你自定义了你的窗体的图标,这个图标就会出现在Form.resx里面。
4、bin文件夹 obj文件夹
Visual Studio 编译时,在bin 目录下有debug 和 release 目录。
Debug: 通常称为调试版本,它包含调试信息,所以要比Release 版本大很多(可能大数百K或数M),并且不进行任何优化,便于程序员调试程序。
Release: 称为发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的,以便于用户很好的使用。
obj目录用于存放在编译过程中生成的中间临时文件,其中也都有debug 和 release 两个子目录, 分别对应调试版本和发行版本。在.NET中,编译是分模块进行的,每个模块的编译结果都保存在了Obj 目录下。最后会合并为一个.exe 或者 .dll 文件保存到 bin 之中。 因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以,这个Obj 目录的作用就是保存这些小块的编译结果,加快编译速度。
一、先解释一下各个文件的作用:
.pdb文件:
程序数据库文件(Program Database File)。默认设置下,Debug的PDB是full,保存着调试和项目状态信息、有断点、堆栈检查等代码,可以对程序的调试配置进行增量链接。
而Release的默认设置对PDB指定为pdb-only,保存着程序出了什么错误,以及错误在哪行。
.vshost.exe文件:
宿主进程文件(VS host process),是Visual Studio 2005中的一项功能,主要是为了提高调试性能。 release时最好删除。
.vshost.exe.manifest 文件:
是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,用于COM类、接口及库的绑定和激活,而这些信息,以往都是存储在注册表中的。
Manifests也制定了组成程序集的文件及Windows类,release 时也最好删除。
二、不生成这些文件的方法:
不生成.vshost.exe文件的方法
如图,打开工程属性的debug标签页,将构成选为「Release」,去掉「Visual Studio Hosting Process有效」的勾选后保存。
转存失败转存失败转存失败
不生成.pdb文件的方法
如图,打开工程属性的build标签页,将构成选为「Release」后打开「详细设定」。将 「输出」中的「Debug信息」从「pdb only」变为「none」后保存。
转存失败转存失败转存失败
转存失败转存失败转存失败
5、Properties文件夹下Assemblyinfo.cs Resources.resx Resources.Designer.cs Settings.settings Settings.Designer.cs
Assemblyinfo.cs:程序集信息对应于如下IDE操作
Resources.resx Resources.Designer.cs Settings.settings Settings.Designer.cs
不是每个c#项目都有的...只有VS的WinForm项目模板才会自动生成,与C#无关...
前者是项目资源的代码文件,后者是项目设置项的代码文件...