
6.3 解决方案的属性
要打开解决方案的Properties对话框,可以在Solution Explorer中右击Solution节点并选择Properties命令。该对话框中包含两个节点——Common Properties和Configuration Properties,如图6-2所示。

图6-2
后面几节将详细介绍Common Properties节点和Configuration Properties节点。
6.3.1 常规属性
有3个为应用程序定义启动项目的选项,它们的含义不言自明。选择Current Selection选项会启动Solution Explorer中当前选中的项目。Single Startup选项可以确保每次启动的是同一个项目,这也是默认选择,因为大多数应用程序都只有一个启动项目。可以使用下拉列表指定需要启动的单个项目。最后一个选项Multiple Startup Projects允许按照特定的顺序启动多个项目,如果一个解决方案包含了客户端/服务器应用程序,并且希望同时运行它们,就可以使用该选项。在运行多个项目时,必须控制它们的启动顺序。使用项目列表旁边的上下箭头可以控制项目的启动顺序。
Project Dependencies部分用于指定某个项目依赖的其他项目。大多数情况下,在为给定的项目添加或删除项目引用时,Visual Studio会自动进行管理。尽管如此,有时仍需要在项目之间创建依赖关系,从而确保它们按照正确的顺序生成。Visual Studio使用解决方案的依赖关系列表来判断项目的生成顺序。该窗口还可以避免无意间添加环形引用,或者删除必需的项目依赖关系。
在Debug Source Files部分可以提供一个目录列表。当调试时,Visual Studio会在这些目录中搜索源文件。IDE会在显示Find Source对话框之前搜索该默认列表。这里也可以列出Visual Studio不应该定位的源文件。如果在提示定位源文件时单击Cancel按钮,文件就会被添加到这个列表中。
Code Analysis Settings部分仅在Visual Studio Enterprises版中可用,它允许选择给每个项目运行的静态代码分析规则集。Code Analysis详见本章后面的内容。
如果从未指定在Visual Studio中运行代码分析,则解决方案属性窗口可能没有Code Analysis Settings部分,即使运行的是某个适当的版本也是如此。为了修正此问题,直接从菜单中运行Code Analysis。当分析结束时,该部分将出现在解决方案属性中。
6.3.2 配置属性
项目和解决方案都有相关的生成配置,用于确定要生成的项和生成方式。令人困惑的是项目配置(决定生成的方式)和解决方案配置(决定生成哪些项目,除非它们同名)无关。新的解决方案会定义Debug和Release(解决方案)配置,对应于在Debug或Release(项目)配置中生成所有的项目。
例如,创建一个名为Test的解决方案配置,该解决方案由两个项目组成:MyClassLibrary和MyClassLibraryTest。当在Test配置中生成应用程序时,希望在Release模式下生成MyClassLibrary项目,以便测试尽可能接近发布的产品。但是,为了单步运行测试代码,需要在Debug模式下生成MyClassLibraryTest项目。
当在Release模式下生成时,如果不希望Test解决方案和应用程序一起生成或部署,则可以在Test解决方案配置中指定:在Release模式中生成MyClassLibrary项目,而不生成MyClassLibraryTest项目。
通过标准工具栏,可以很方便地切换不同的配置和平台。有一个下拉列表,可用于在需要时快速切换到不同的配置和平台。
在Solution Properties对话框中选中Configuration Properties节点,如图6-3所示,Configuration和Platform下拉菜单就变为可用。Configuration下拉菜单包含了所有可用的解决方案配置:Debug and Release(默认)、Active和All。类似地,Platform下拉菜单包含所有可用的平台。在这些下拉菜单出现并可用时,可以在该页面上为每个配置或每个平台指定设置。也可以使用Configuration Manager按钮添加其他解决方案配置或平台。

图6-3
在添加其他解决方案配置时,有一个选项(默认选中)可以为已存在的项目创建对应的项目配置(对于这个新的解决方案配置,该项目设置为默认使用该配置进行生成)。还有一个选项可以根据已有的配置创建新的配置。如果选中Create Project Configurations选项,并且新的配置基于已有的配置,新的项目配置就会复制为已有配置指定的项目配置。
在解决方案配置文件中还可以指定要为哪一种类型的CPU生成。如果希望部署到64位体系结构的计算机上,这就显得非常重要。可用于创建新平台配置的选项受CPU类型(x86和x64)的限制。
在Solution Explorer窗口中右击Solution节点,就可以在弹出的上下文菜单中直接访问所有的解决方案设置。Set Startup Projects菜单项可以打开Solution Configuration窗口,而Configuration Manager、Project Dependencies和Project Build Order菜单项可以打开Configuration Manager和Project Dependencies窗口。只有在解决方案包含多个项目时,Project Dependencies和Project Build Order菜单项才可见。
选中Project Build Order菜单项会打开Project Dependencies窗口,列出生成的顺序,如图6-4所示。这个选项卡可以根据依赖关系颠倒生成项目的顺序。如果维护的是项目二进制程序集的引用,而不是项目引用,就可以使用这个选项。还可以用它再次检查项目是否按照正确的顺序生成。

图6-4