项目通常产生 EXE 或 DLL。
项目可以相互依赖;在生成过程中,Visual C++ 环境在每个项目中和各项目间都要检查依赖项。
每个项目都有核心源代码,并且根据项目类型的不同,它可以有许多其他的文件分别包含项目的各个方面。
这些文件的内容由文件扩展名指示。
Visual Studio 开发环境利用文件扩展名确定在生成过程中如何处理文件内容。
文件扩展名 类型 内容
.asmx 源 部署文件。
.asp 源 Active Server Page 文件。
.atp 项目 应用程序模板项目文件。
.bmp、.dib、.gif、.jpg、.jpe、.png 资源 常规图像文件。
.bsc 编译 浏览器代码文件。
.cpp、.c 源 应用程序的主源代码文件。
.cur 资源 光标位图图形文件。
.dbp 项目 数据库项目文件。
.disco 源 动态发现文档文件。处理 XML Web services 发现。
.exe、.dll 项目 可执行文件或动态链接库文件。
.h 源 头文件或包含文件。
.htm、.html、.xsp、.asp、.htc、.hta、.xml 资源 公共 Web 文件。
.HxC 项目 帮助项目文件。
.ico 资源 图标位图图形文件。
.idb 编译 状态文件,包含在最小重新生成和增量编译期间可由编译器使用的源文件和类定义之间的依赖项信息。使用 /Fd 编辑器选项指定 .idb 文件的名称。有关更多信息,请参见 /Gm(启用最小重新生成)。
.idl 编译 接口定义语言文件。有关更多信息,请参见Platform SDK 中的接口定义 (IDL) 文件。
.ilk 链接 增量链接文件。有关更多信息,请参见 /INCREMENTAL。
.map 链接 包含链接器信息的文本文件。使用 /Fm 编译器选项命名映射文件。有关更多信息,请参见 /MAP。
.ncb 解决方案 非编译浏览器文件。
.obj、.o 已编译但未链接的对象文件。
.pch 调试 预编译头文件。
.pdb 调试 程序调试数据库文件。有关更多信息,请参见什么是 .pdb 文件?
.rc、.rc2 资源 生成资源的资源脚本文件。
.sbr 编译 源浏览器中间文件。BSCMAKE 的输入文件。
.sln 解决方案 解决方案文件。通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
.suo 解决方案 解决方案用户选项文件。记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。
.srf 项目 服务器响应文件。该文件包含 ATL Server 应用程序的 HTML 代码。
.txt 资源 文本文件,通常为自述文件。
.vap 项目 Visual Studio Analyzer 项目文件。
.vbg 解决方案 兼容的项目组文件。
.vbp、.vip、.vbproj 项目 Visual Basic 项目文件。
.vcproj 项目 Visual C++ 项目文件。有关更多信息,请参见项目文件和生成文件。
.vdproj 项目 Visual Studio 部署项目文件。
.vmx 项目 宏项目文件。
.vup 项目 实用工具项目文件。
项目文件和生成文件
文件名 目录位置 解决方案资源管理器位置 说明
Solname.sln Projname 不显示在解决方案资源管理器中
在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中。
Projname.suo Projname 不显示在解决方案资源管理器中
在开发环境中使用的解决方案选项文件。它存储为解决方案创建的所有用户选项,以便每次打开项目的解决方案时,它都具有所需的外观并包含所有选择的自定义设置。此文件存储在父项目目录中。
Projname.vcproj Projname 不显示在解决方案资源管理器中
在开发环境中使用的项目文件。在以前的版本中,此文件称为 Projname.dsp。它存储项目的专用信息。每个项目都有一个单独的 .vcproj 文件。有关更多信息,请参见“.vcproj 文件的格式”。此文件存储在父项目目录中。
Projname.idl Projname 源
包含类型库的接口说明语言源代码的文件。Visual C++ 使用此文件生成类型库。生成的库向其他自动化客户端公开控件的接口。有关更多信息,请参见Platform SDK 中的接口定义 (IDL) 文件。
Projname.ncb Projname 不显示在解决方案资源管理器中
非编译浏览器文件。它包含分析器生成的由类视图使用的信息。如果此文件被无意间或故意删除,将自动重新生成它。
Readme.txt Projname 项目
一个描述项目中的每个文件的文件,它使用应用程序向导实际创建的文件名进行描述。位于项目的父目录中。
为 CLR 项目创建的文件
文件名 文件说明
AssemblyInfo.cpp 此文件包含用于修改项目的程序集元数据的信息,即属性、文件、资源、类型、版本信息、签名信息等。有关更多信息,请参见 .NET Framework SDK 中的“程序集概念”。
projname.asmx 一个文本文件,它引用封装了 XML Web services 功能的托管类。
projname.cpp Visual Studio 为您创建的主源文件和应用程序的入口点。标识项目的 .dll 文件和项目命名空间。在此文件中提供您自己的代码。
projname.vsdisco 一个 XML 部署文件,它包含对描述 XML Web services 的其他资源的链接。
projname.h 项目的主包含文件,包含所有声明、全局符号和其他头文件的 #include 指令。
projname.ncb 无编译浏览器文件,包含分析器生成的信息和类视图使用的信息。
projname.sln 在开发环境中用来将项目的所有元素组织成一个解决方案的解决方案文件。
projname.suo 在开发环境中使用的解决方案选项文件。
projname.vcproj 在开发环境内用来存储该项目的特定信息的项目文件。
ReadMe.txt 说明文件,它使用由模板创建的实际文件名来描述项目中的每个文件。
ATL 程序或控件的源文件和头文件
活动模板库 (ATL) 是一套基于模板的 C++ 类,使您可以创建小型、快速的组件对象模型 (COM) 对象。它对主要的 COM 功能具有特殊支持,这些功能包括常用实现、双重接口、标准 COM 枚举数接口、连接点、分开的接口和 ActiveX 控件。
根据为创建的项目选择的选项,在 Visual Studio 中创建 ATL 项目时将创建下列文件。
所有这些文件都位于 Projname 目录中,而且位于解决方案资源管理器中的头文件(.h 文件)文件夹中或源文件(.cpp 文件)文件夹中。
仅在创建 ATL Server 项目时,项目才包含 ProjnameIsapi.vcproj、ProjnameIsapi.h、ProjnameIsapi.cpp 和 ProjName.srf 文件。
文件名 说明
Projname.h 主包含文件,包含 ATLSample.idl 中定义的项的 C++ 接口定义和 GUID 声明。编译期间由 MIDL 重新生成。
Projname.cpp 主程序源文件。它包含进程内服务器的 DLL 导出实现和本地服务器的 WinMain 实现。对于服务,它还实现所有服务管理函数。
ProjnameIsapi.cpp 包含 ISAPI 扩展代码和附加 ATL Server 代码的根 ISAPI 扩展文件。可以根据项目的具体需要自定义 ATL Server 代码。
ProjnameIsapi.vcproj 使用应用程序向导生成的 Visual C++ 项目的主项目文件。它包含生成文件的 Visual C++ 版本信息,以及有关用应用程序向导选择的平台、配置和项目功能的信息。
ProjnameIsapi.def 包含将从 ISAPI 扩展 DLL 导出的函数,其中包括 ISAPI 扩展函数 HttpExtensionProc、GetExtensionVersion 和 TerminateExtension。这些函数委托给 CIsapiExtension 类的实例。
Resource.h 资源文件的头文件。
StdAfx.cpp 包含 StdAfx.h 和 Atlimpl.cpp 文件
StdAfx.h 包含 ATL 头文件。
ProjName.srf 服务器响应文件。包含 ATL Server 应用程序的 HTML 代码。
MFC 程序或控件的源文件和头文件
所有这些文件都位于 Projname 目录中,而且位于解决方案资源管理器中的头文件(.h 文件)文件夹中或源文件(.cpp 文件)文件夹中。
文件名 说明
Projname.h 程序或 DLL 的主包含文件。它包含其他头文件的所有全局符号和 #include 指令。它从 CWinApp 导出 CPrjnameApp 类并声明 InitInstance 成员函数。对于控件,CPrjnameApp 类从 COleControlModule 导出。
Projname.cpp 主程序源文件。它创建从CWinApp 导出的 CPrjnameApp 类的一个对象,并重写 InitInstance 成员函数。对于可执行文件,CPrjnameApp::InitInstance 完成以下几件事。它注册文档模板,以用作文档和视窗之间的连接;创建主框架窗口;以及创建空文档(如果有一个文档被指定为应用程序的命令行参数,则打开此文档)。对于 DLL 和 ActiveX(原为 OLE)控件,CProjNameApp::InitInstance 通过调用 COleObjectFactory::RegisterAll
向 OLE 注册控件的对象工厂,然后调用 AfxOLEInit。另外,CProjNameApp::ExitInstance 成员函数用于通过 AfxOleTerm 调用从内存中卸载控件。此文件也通过实现 DllRegisterServer 和 DllUnregisterServer 函数,在 Windows 注册数据库中注册和注销控件。
Projnamectrl.h、Projnamectrl.cpp 声明并实现 CProjnameCtrl 类。从 COleControl 导出 CProjnameCtrl,并且定义一些初始化、描述和序列化(加载和保存)控件的成员函数的主干实现。也定义消息、事件和调度映射。
Projnamedlg.cpp、Projnamedlg.h 选择基于对话框的应用程序时创建。此文件导出和实现名为 CProjnameDlg 的对话框类,并且包含初始化对话框和执行对话框数据交换 (DDX) 的主干成员函数。“关于”对话框类也放在这些文件中,而不是放在 Projname.cpp 中。
Dlgproxy.cpp、Dlgproxy.h 在基于对话框的程序中,主对话框的项目自动化代理类的实现和头文件。仅当选择了自动化支持时才使用它。
Projnamedoc.cpp、Projnamedoc.h 导出和实现名为 CProjnameDoc 的文档类,并且包含初始化文档、序列化(加载和保存)文档和实现调试诊断的主干成员函数。
Projnameset.h/.cpp 创建支持数据库且包含记录集类的程序时创建。
Projnameview.cpp、Projnameview.h 导出并实现名为 CProjnameView 的视图类,该类用于显示和打印文档数据。CProjnameView 类从下列 MFC 类之一导出:
CEditView
CFormView
CRecordView
COleDBRecordView
CTreeView
CListView
CRichEditView
CScrollView
CView
CHTMLView
CHTMLEditView
项目的视图类包含描述视图和实现调试诊断的主干成员函数。如果启用了打印支持,则还添加打印、打印设置和打印预览命令消息的消息映射项。这些项调用基视图类中的相应成员函数。
ProjnamePropPage.h、ProjnamePropPage.cpp 声明和实现 CProjnamePropPage 类。从 COlePropertyPage 导出 CProjnamePropPage 并且提供实现数据交换和验证的主干成员函数 DoDataExchange。
IPframe.cpp、IPframe.h 在应用程序向导的自动化选项页(六个步骤中的第三步)中,如果选定了“袖珍服务器”(Mini-Server) 或“完全服务器”(Full-Server) 选项,则创建它们。这些文件导出并实现名为 CInPlaceFrame 的就地框架窗口类,该类在容器程序就地激活服务器时使用。
Mainfrm.cpp、Mainfrm.h 从 CFrameWnd(对于 SDI 应用程序)或 CMDIFrameWnd(对于 MDI 应用程序)导出 CMainFrame 类。如果在应用程序向导的“应用程序选项”页(六个步骤中的第四步)中选定了相应的选项,则 CMainFrame 类处理工具栏按钮和状态栏的创建。有关使用 CMainFrame 的信息,请参见应用程序向导创建的框架窗口类。
Childfrm.cpp、Childfrm.h 从 CMDIChildWnd 导出 CChildFrame 类。CChildFrame 类用于 MDI 文档框架窗口。如果选定了 MDI 选项,则总是创建这些文件。