Show / Hide Table of Contents

    第六章 - 项目编译

    我们必须先编译项目文件,然后才能生成应用程序并部署给用户。在编译项目或解决方案之前,您需要配置各种项目属性和解决方案属性,以便您可以正确编译项目或解决方案。

    配置 C# 项目属性

    不同的项目类型包含了不同的项目属性。例如:C#项目可以配置与应用程序、编译、编译事件、打包、调试和签名相关的属性;JavaScript/TypeScript 项目可以配置应用程序和编译相关的属性。

    本节将介绍 C# 项目的项目属性。下一节将介绍 JavaScript/TypeScript 项目的项目属性。

    要配置 C# 项目属性,请在 解决方案资源管理器 中右键点击 C# 项目,然后选择 属性,项目设计器便会弹出。

    应用程序

    应用程序 选项卡允许您指定 C# 应用程序的各种配置。

    以下设置允许您为应用程序指定一些基本配置,包括默认命名空间、目标框架、输出类型、启动应用程序时的入口点、程序集信息、资源文件等。

    • 程序集名称

      指定程序集的名称。

    • 默认命名空间

      为新添加到项目中的文件指定默认命名空间。

    • 目标框架

      指定应用程序所使用的 .NET 版本。如果您的项目使用 .NET Core,则可以选择 目标框架 中列出的一个受支持的 .NET Core 版本。

    • 输出类型

      指定要编译的应用程序类型,输出类型因您创建的项目类型而异。例如,对于 Web 应用程序项目,您必须选择 控制台应用程序 作为输出类型。对于控制台应用程序项目,您可以选择 Windows 应用程序、控制台应用程序 或 类库。

    • 启动对象

      指定启动应用程序时要调用的入口点。入口点通常设置为程序中的主窗体或启动应用程序时运行的 Main 方法。如果您的编译具有多个包含 Main 方法的类型,您可以指定要用作应用程序入口点的 Main 方法的类型。类库的此属性默认设为 (Not set),因为它们没有入口点。

    • 程序集信息

      指定程序集的详细信息。

      标题:指定程序集清单的标题。

      说明:输入关于程序集清单的相关说明。

      公司:指定程序集清单的公司名称。

      产品:指定程序集清单的产品名称。

      版权:指定程序集清单的版权声明。

      注册商标:指定程序集清单的注册商标。

      程序集版本:指定程序集的版本。

      文件版本:指定Win32文件版本。

      GUID:指定程序集的唯一 GUID。

      中性语言:指定程序集支持的区域性。

      使程序集COM可见:指定程序集中的类型是否可用于 COM。

    • 资源

      资源 设置允许您进行应用程序的资源文件管理。

      • 图标和清单

        图标和清单 选项是默认被勾选的。这些设置允许您选择自己的图标,或选择不同的清单生成选项。在大多数情况下,您可以通过此按钮来管理您的应用程序资源。如果要为项目提供资源文件,请改为选择 资源文件 按钮。

        • 图标

          指定 .ico 文件并将其用作应用程序的图标。输入 .ico 文件的名称,或点击 浏览 选择 .ico 图标文件。请注意,此功能仅适用于在 SnapDevelop 之外创建的 .NET Framework 应用程序。

        • 清单

          当应用程序在用户帐户控制 (UAC) 下的 Windows 上运行时,选择清单生成选项。此选项可以具有以下值:

          • 嵌入带默认设置的清单 - 默认选项。它会嵌入安全信息到应用程序的可执行文件中,并指定 requestedExecutionLevel 为 AsInvoker。
          • 创建不带清单的应用程序 - 这种方法称为虚拟化,使用此选项可与早期应用程序兼容。
      • 资源文件

        当您要为项目提供资源文件时,请选择此单选按钮。输入资源文件的路径名或点击 浏览 将资源文件添加到项目。

    编译

    编译 选项卡允许您配置各种编译属性,如条件编译符号、目标平台、警告、错误处理以及输出管理。要访问这些设置,请点击项目设计器中的 编译 选项卡。

    • 配置和平台

      SnapDevelop 目前支持两种编译方式:Debug 和 Release,应用运行的平台默认设置为 Any CPU。因此,您可以选择在任何CPU上执行 Debug 配置或在任何 CPU 上执行 Release 配置,但您不能同时选择 Debug 和 Release 选项。您可以在 配置 和 平台 选项选择要显示或修改的具体配置和平台。

      配置

      指定要显示或修改的配置设置(Debug 或 Release)。

      平台

      默认情况下,平台设置为 Any CPU,这意味着您可以在任何开发平台上编译和部署您的应用程序。

    • 常规

      • 编译符号

        定义一个或多个符号来执行条件编译。如果您在此处定义了多个符号,请使用分号或逗号分隔符号。在此处定义了条件编译符号后,可以使用该符号有条件地编译项目范围的源文件,而无需在单个文件中定义此符号。更多详情,请参阅 编译符号。

      • 定义 DEBUG 常量

        选择此选项可将 DEBUG 定义为项目中所有源代码文件中的常量符号,启用此选项与在 条件编译符号 框中输入 DEBUG 的效果相同。

      • 定义 TRACE 常量

        选择此选项可将 TRACE 定义为项目中所有源代码文件中的常量符号,启用此选项与在 条件编译符号 框中输入 TRACE 的效果相同。

      • 目标平台

        指定运行输出文件的处理器:

        选择 Any CPU - 你的输出文件可以在任意处理器上运行。

        选择 x86 - 你的输出文件可以在任何 32 位 Intel 兼容的处理器上运行。

        选择 x64 - 你的输出文件可以在任何 64 位 Intel 兼容的处理器上运行。

        选择 ARM32 - 你的输出文件可以在任何 32 位 ARM 兼容的处理器上运行。

        选择 ARM64 - 你的输出文件可以在任何 64 位 ARM 兼容的处理器上运行。

      • 首选32位

        如果启用此选项,您的应用程序在 32 位或 64 位 Windows 操作系统上均会作为 32 位应用程序运行。如果禁用此选项,您的应用程序在 32 位 Windows 操作系统上只会作为 32 位应用程序运行,在 64 位 Windows 操作系统上只会作为 64 位应用程序运行。请注意,仅当 目标平台 列表设置为 Any CPU 时,首选32位 选项才可用。此选项不适用于 类库 项目。

        如果将应用程序作为 64 位应用程序运行,则指针大小会加倍,并且可能会与其他 32 位专用库不兼容。所以,仅当应用程序需要超过 4GB 的内存或 64 位指令能显著提高性能时,才作为 64 位应用程序来运行。

      • 允许不安全代码

        允许编译使用了 unsafe 关键字的代码。默认情况下,C# 不支持指针运算,以确保类型安全。但是,您仍可以使用 unsafe 关键字来定义可以使用指针的不安全上下文。

        不安全代码具有以下特性:

        • 不安全代码可以是类型、方法或代码块。
      • 不安全的代码可以通过删除数组边界检查来提高性能。

        • 必须使用 unsafe 编译器选项编译不安全的代码。
        • 不安全的代码可能会导致安全问题。
        • 当您调用需要指针的 native function 时,就必须允许不安全代码。
      • 优化代码

        如果启用此选项,C# 编译器会使您的输出文件更小、更快、更高效。

    • 错误和警告

      以下设置您编译项目时的错误和警告选项。

      • 警告等级

      指定编译器要显示的警告级别。警告等级的范围是 0 到 4 之间的数字。警告等级越高显示的警告数量越多,警告等级越低显示的警告越少但越严重。下表说明了各个警告等级的含义:

      警告等级 描述
      0 不显示任何警告消息。
      1 仅显示严重警告消息。
      2 显示 1 级警告和不太严重的警告。
      3 显示 2 级警告和不太严重的警告。
      4 显示所有 3 级警告和信息性警告。
      • 抑制警告

      阻止生成一个或多个警告。如果有多个警告需要禁止,请使用分号或逗号分隔警告编号,例如 1701;1702。

    • 视警告为错误

      以下设置允许您设置将哪些警告视为错误。

      • 无

        不将警告视为错误。

      • 全部

        将所有警告视为错误。

      • 特定警告

        将特定警告视为错误。如果要将多个警告视为错误,请使用分号或逗号分隔警告编号。

    • 输出

      以下设置允许您指定编译过程的输出选项。

      • 输出路径

        指定输出文件的路径。选择 浏览 指定路径,或直接在此框中输入路径。如果不指定路径,编译后的文件将输出到默认路径,即 bin\Debug 或 bin\Release\。

      • XML 文档文件

        指定包含文档注释的文件名称。如果启用此选项并编译项目,您将在 解决方案资源管理器 中看到一个 .xml 文件。如下图所示:

      • 生成序列化程序集

        指定编译器是否使用XML序列化程序生成工具来创建XML序列化程序集。序列化程序集可以提高 XmlSerializer 的启动性能。

        自动 -- 默认选项。仅当您使用 XmlSerializer 将代码中的类型编码为 XML 时才生成序列化程序集。

        开 -- 始终生成序列化程序集。

        关 -- 始终不生成序列化程序集(不管是否使用 XmlSerializer)。

    • 高级

      允许您指定编译相关的高级设置,包括编程语言的版本,编译器错误报告的方式、调试信息、文件比对、以及库基址。

      • 语言版本

        指定要使用的编程语言的版本。每个版本的编程语言都有其特定的功能,此选项可以使您强制编译器启用某些已实现的功能,或仅允许与现有标准兼容的功能。下表显示了 SnapDevelop 编译器中当前可用的各种语言版本。

      语言版本 意义
      C# 的最新主版本(默认) 编译器从它可以支持的最新主版本中识别所有有效的语言语法。
      C# 的最新次版本(最新) 编译器从它可以支持的最新次版本中识别所有有效的语言语法。
      ISO-1 编译器仅识别 ISO/IEC 23270:2003 C# (1.0/1.2) 中包含的语法。
      ISO-2 编译器仅识别 ISO/IEC 23270:2006 C# (2.0) 中包含的语法。
      C# 3 编译器仅识别包含在 C# 3.0 或更早版本中的语法。
      C# 4 编译器仅识别包含在 C# 4.0 或更早版本中的语法。
      C# 5 编译器仅识别包含在 C# 5.0 或更早版本中的语法。
      C# 6 编译器仅识别包含在 C# 6.0 或更早版本中的语法。
      C# 7 编译器仅识别包含在 C# 7 或更早版本中的语法。
      C# 7.0 编译器仅识别包含在 C# 7.0 或更早版本中的语法。
      C# 7.1 编译器仅识别包含在 C# 7.1 或更早版本中的语法。
      C# 7.2 编译器仅识别包含在 C# 7.2 或更早版本中的语法。
      C# 7.3 编译器仅识别包含在 C# 7.3 或更早版本中的语法。
      C# 8.0 编译器仅识别包含在 C# 8.0 或更早版本中的语法。
      C# 9.0 编译器仅识别包含在 C# 9.0 或更早版本中的语法。
      • 内部编译器错误报告

        指定是否向 Appeon 报告编译器错误。该选项默认情况下会选择 提示,所以在默认情况下如果发生任何编译错误,您会收到一个提示。

        • 提示 -- 默认选项。如果发生任何编译错误,您将收到提示。您可以选择通过电子邮件方式向 Appeon 发送错误报告。
        • 队列 - 错误报告将被列入队列。
        • 无 - 只会在编译器的输出窗口中报告错误。
        • 发送 - 将自动发送错误报告。
      • 检查算术上溢出/下溢出

        指定不在 checked 或 unchecked 关键字范围内且生成的值超出数据类型范围的整数算法语句是否会导致运行时异常抛出。

      • 调试信息

        指定编译器生成的调试信息类型。下表显示了各种类型的调试信息及其各自的含义:

      类型 描述
      Full 将调试器附加到正在运行的程序中。
      None 不生成任何调试信息。
      PdbOnly 允许使用在调试器中启动的程序时调试源代码,但仅显示已连接到调试器的正在运行的程序的汇编程序。
      Portable 生成 .pdb 文件,这是一个可移植且不特定于某个平台的符号文件。此文件包含主可执行文件中的内容及其生成信息的方式。
      Embedded 将可移植符号信息嵌入到程序集中。不生成 .pdb 文件。
    • 文件对齐

      指定输出文件的大小。您可以从下拉列表中选择以下数值(单位为字节):512、1024、2048、4096 和 8192。输出文件的大小是通过在边界上对齐该值的倍数的部分来确定的。

    • 库基址

      指定要加载 DLL 的首选基址,DLL 的默认基址由 .NET Framework 公共语言运行时指定。

    编译符号

    定义一个或多个符号来执行条件编译。如果您在此处定义了多个符号,请使用分号或逗号分隔符号。在此处定义了条件编译符号后,可以使用该符号有条件地编译项目范围的源文件,而无需在单个文件中定义此符号。

    该选项定义的符号名称适用于程序中的所有源代码文件。该选项相当于 #define 预处理指令(不同的是该选项对项目中的所有文件生效,而#define 预处理指令只对当前文件有效)。除非使用 #undef 指令取消定义,否则此处的符号将保持为定义状态。 另外,#undef 指令只对当前文件生效。

    您可以将此选处定义的符号与 #if、#else、#elif 和 #endif 一起使用,以对项目中的源文件执行条件编译。

    例如您使用 SnapDevelop 创建了一个控制台应用程序并且在 条件编译符号 框输入“ABC; HelloWorld”。

    然后在 解决方案资源管理器 的 .cs 文件中添加以下代码:

    class Program
        {
            static void Main(string[] args)
            {
            #if ABC
                Console.WriteLine("ABC");
    
            #else
                Console.WriteLine("Hello World!");
    
            #endif
    
            #if HelloWorld
                Console.WriteLine("Hello World!");
    
            #else
                Console.WriteLine("Hello World!");
    
            #endif
                Console.ReadKey();
            }
        }
    

    当您运行该应用程序时,您将获得以下输出:

    如果您使用 #undef 指令取消定义 ABC。

    #undef ABC
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
            #if ABC
                Console.WriteLine("ABC");
    
            #else
                Console.WriteLine("Hello World!");
    
            #endif
    
            #if HelloWorld
                Console.WriteLine("Hello World!");
    
            #else
                Console.WriteLine("Hello World!");
    
            #endif
                Console.ReadKey();
            }
        }
    }
    

    然后再次运行应用程序,您将获得以下输出:

    编译事件

    编译事件 选项卡允许您指定编译配置,并指定 Post-build 事件的运行条件。要访问这些设置,请点击项目设计器中的 编译事件 选项卡。

    • Pre-build 事件命令行

      允许您编写在编译开始之前就执行的命令。如果要编写长命令,可以点击 编辑 Pre-build,然后在弹出的 Pre-build 事件命令行 输入框中输入命令。

      在命令行输入框,您可以插入各种宏,宏不区分大小写,也可以用宏指定文件的路径或获取输入文件的实际名称。

      附录 B:Pre-build 和 Post-build 宏列表列出并解释了您可以在命令行中添加的宏。

    • Post-build 事件命令行

      允许您编写要在编译完成后执行的命令。如果要编写长命令,可以点击 编辑 Post-build,然后在弹出的 Post-build 事件命令行 输入框中输入命令。

      在命令行输入框,您同样可以插入各种宏。

    • 运行 Post-build 事件

      指定运行 Post-build 事件的条件,下表列出了各种条件以及应用这些条件的结果。

      选项 结果
      总是 无论编译是否成功,Post-build 事件都将运行。
      成功编译时 仅当项目编译成功时,Post-build 事件才会运行。
      当编译更新项目输出时 仅当编译的输出文件(.exe 文件或 .dll 文件)与之前编译的文件不同时,Post-build 事件才会运行。也就是说,当项目是最新的话,则 Post-build 事件不会运行。
    打包

    打包 选项卡允许您生成 NuGet 包并配置包的特性,如包 ID、包版本、包作者、输出路径,以及包中的所有细节。要访问这些设置,请点击项目设计器中的 打包 选项卡。

    • 在项目编译时自动生成 NuGet 包

      如果启用此选项,则可以在编译项目时通过 SnapDevelop 自动生成 NuGet 包。只有当勾选了该选项时,接下来配置的各种包属性才能有意义。

    • 要求接受许可证

      如果启用此选项,在安装软件包之前,系统会询问您是否接受该软件包许可。

    • 包装选项

      下表列出了各个包属性以及其含义。

      属性 描述
      包 ID 包的唯一标识符,不区分大小写。ID 通常遵循 .NET 命名空间的命名约定,且不允许包含空格或 URL 不支持的字符。
      包版本 包的版本。
      作者 包的作者。如果包是由多个作者创建的,请使用逗号分隔作者。
      公司 包的创建者(公司)。如果有多名创建者,请使用逗号分隔创建者。
      产品 产品名称。
      说明 包的常规说明。
      版权 包的版权详细信息。
      项目 URL 包主页的 URL。
      图标文件 图标文件的路径。文件大小为不超过 1 MB。文件格式为 JPEG 和 PNG。图像分辨率建议为 128 x 128 像素。
      存储库 URL 存储库的 URL。
      存储库类型 当前使用的存储库类型,默认为 Git。
      标记 表示包特征的关键字,可以帮助您在 nuget.org 上找到包。
      发行说明 当前发布包中所做更改的描述。
      程序集中性语言 指定程序集的中性语言种类。
      程序集版本 每个程序集都有一个代表其身份的唯一版本号,该版本号由四部分组成:<主版本>.<次要版本>.<内部版本号>.<修订版>。
      程序集文件版本 类似文件系统中为文件提供的版本号。
      许可 许可表达式和许可证文件的路径。假如您的项目开源协议为 MIT,则可以直接填写 MIT 作为您的许可证明,而无需选择 MIT 协议文件。
    调试

    调试 选项卡允许您为 SnapDevelop 中 C# 项目的调试行为设置属性。要访问这些设置,请点击项目设计器中的 调试 选项卡。

    下面是可配置的调试选项以及各个选项的含义。

    配置文件 -- 默认为当前项目名字。您可以点击 新建... 以添加新配置文件名,或者点击 删除 删除当前下拉列表中选中的配置文件名。

    启动 -- 指定启动方式。

    • 项目 -- 如果选择 项目,调试器将启动当前设置为启动项目的项目进行调试。
    • 可执行文件 -- 如果选择 可执行文件,调试器会在您调试应用程序(例如Windows或控制台应用程序项目)时启动并附加到 SnapDevelop 外部的可执行文件。如选择 可执行文件选项,您需要进一步指定可执行文件的路径。
    • IISExpress -- 如果选择 IISExpress,将在 IISExpress 环境中启动项目及编译。您还需要到页面底部指定以下设置:
      • 启用本地代码调试 -- 该选项指定是否支持调试本地代码。 如果正在调用 COM 对象,或者启动了一个自定义程序,该程序调用了您的项目,并且以本地代码编写,如果您必须调试此本地代码的话,请选中此复选框。 清除此复选框可禁用调试非托管代码。 默认情况下清除此复选框。
      • 启用 SQL Server 调试 -- 启用或者禁止从您的应用程序调试 SQL 过程。 默认情况下清除此复选框。
      • Web服务器设置 -- 主要包括应用程序地址、IIS Express 位数、是启用 SSL、是否启用匿名身份认证、是否启用 Windows 身份认证等。
    • IIS -- 如果选择 IIS,将在IIS环境中启动项目及编译。您还需要到页面底部指定以下设置:启用本地代码调试、 启用 SQL Server 调试、Web服务器设置 (包括应用程序地址、是否启用匿名身份认证、是否启用 Windows 身份认证等)。
    • Docker -- 如果选择 Docker,您需要配置 Docker 引擎以及选择是否启动浏览器。
    • KubernetesCompose -- 如果选择 KubernetesCompose,将在 KubernetesCompose 环境中启动项目及编译。
    • Kubernetes -- 如果选择 Kubernetes,您还可以进一步设置是否启动浏览器以及更改 Kubernetes 的相关设置,例如集群源、集群上下文、命名空间、容器引擎、存储仓库等。

    应用程序参数 -- 为调试的应用程序指定命令行参数。

    工作目录 -- 指定应用程序的工作目录。默认情况下, C# 应用程序的工作目录是 \bin\debug。

    使用远程计算机 -- 要从远程计算机调试应用程序,请选中此复选框,然后在文本框中输入该远程计算机的路径。

    环境变量 -- .NET Core 会在您启动应用程序时读取存储在 launchSetting.json 文件中的环境变量。您可以将环境设置为任何值,但 .NET Core 支持三种常见值:Development、Staging 和 Production。

    • Development:开发环境可以启用不能在生产环境中启用的功能。
    • Staging:暂存环境主要用于在将所有安装/配置/迁移脚本和过程应用于生产环境之前对其进行测试。此外,Staging 会被用于运行性能测试,尤其是负载测试,因为该测试通常对环境很敏感。
    • Production:选择生产环境以最大限度地提高安全性、性能和应用程序的稳健性。生产环境与开发环境有很多不同之处:比如缓存;客户端资源被捆绑、减少,并可能由 CDN 提供;诊断错误页面被禁用;友好的错误页面被启用;启用生产日志记录和监控。请注意,如果未设置环境,则默认为 Production。
    签名

    签名 选项卡允许您签署应用和签署强命名的程序集。要访问这些设置,请点击项目设计器中的 签名 选项卡。

    • 为程序集签名

      您可以勾选此复选框以对程序集进行签名并创建强名称密钥文件。启用此选项将允许您使用 Windows 软件开发工具包 (SDK) 支持的Al.exe工具对程序集进行签名。

    • 选择一个强名称密钥文件

      您可以选择或新建用于程序集签名的强名称密钥文件。选择 新建 以创建新的密钥文件或选择 浏览 以选择现有的密钥文件。如果您选择 新建,则会弹出 创建强名称密钥文件 对话框,您可以在其中指定密钥文件名并使用密码保护密钥文件,密码长度必须至少为六个字符。如果指定密码,则会创建个人信息交换(.pfx)文件。如果您不指定密码,则会创建一个强名称密钥(.snk)文件。下表简要介绍了这两种类型的文件。

      文件类型 描述
      .pfx 文件 包含证书及其公钥和私钥,用于代码签名并防止恶意篡改公开分发的程序集。
      .SNK 文件 包含强密钥,用于强命名,使用密钥用来标识程序集的唯一。

      如果使用创建的密钥文件生成项目,则创建的文件将用于对程序集进行签名。

    • 仅延迟签名

      您可以勾选此复选框以延迟程序集签名。如果启用此选项,您的项目将变得无法调试且不会运行。但是,您可以使用带有 -Vr 选项的强名称工具 (Sn.exe) 在开发过程中跳过验证。

    您可以查看已编译项目文件中的组件(例如 .dll 文件)以检查程序集是否已经签名。

    此图像表示程序集已签名。

    此图像表示程序集未签名(可能是因为未启用 为程序集签名 选项)。

    如果启用 仅延迟签名 选项,您将获得公钥但程序集未签名。

    配置 JavaScript/TypeScript 项目属性

    不同的项目类型包含了不同的项目属性。例如:C# 项目可以配置与应用程序、编译、编译事件、打包、调试和签名相关的属性;JavaScript/TypeScript 项目可以配置应用程序和编译相关的属性。

    本节将介绍 JavaScript/TypeScript 项目的项目属性。

    要配置 JavaScript/TypeScript 项目属性,请在 解决方案资源管理器 中右键点击项目,然后选择 属性,项目设计器便会弹出。

    应用程序

    应用程序 选项卡允许您为 JavaScript/TypeScript 应用程序配置以下相关设置:

    • 启动命令 -- 选择项目启动时执行的命令。
    • 编译命令 -- 选择项目编译时执行的命令。
    • 脚本 -- 添加、删除或修改项目启动和编译时可执行的脚本命令列表。
    编译

    编译 选项卡允许您为 JavaScript/TypeScript 应用程序配置以下编译属性。

    • 公共路径 -- 指定应用的部署地址。
    • 输出目录 -- 指定构建产生的文件的存放路径。
    • 资源目录 -- 指定静态文件的存放路径。

    配置解决方案属性

    解决方案属性指定如何编译解决方案中的项目。要配置解决方案属性,请在 解决方案资源管理器 中右键点击解决方案,然后选择 属性,解决方案属性 对话框会弹出。

    启动项目

    该选项允许您指定在启动 SnapDevelop 调试器时运行哪个项目。想要配置 启动项目 设置,请展开 通用属性 节点,然后选择 启动项目。

    • 当前选择 -- 当您启动 SnapDevelop 调试器时,当前项目会运行。

    • 单个启动项目 -- 如果您希望在启动 SnapDevelop 调试器时运行某个项目,请选择此选项并从下拉列表中选择该项目。

    项目依赖项

    编译解决方案前,您可能需要先编译某些项目,以便其他项目能成功调用它们的可执行代码。该 项目依赖项 设置允许您指定解决方案中项目的编译顺序。要配置 项目依赖项 设置,请展开 通用属性 节点,然后选择 项目依赖项。

    • 项目 -- 下拉列表包含解决方案中的所有项目。选择一个调用(依赖)了其他项目的项目。

    • 依赖于 -- 根据 项目 中被选中的项目,选择被该 项目 调用(依赖)了的项目。

    请注意,这里不允许循环依赖。例如,如果项目 A 依赖于项目 B,而项目 B 又依赖于项目 C,那么项目 C 不能依赖于项目 A 或项目 B,项目 B 不能依赖于项目 A。另请注意,在 依赖于 窗格中选择的项目可能并未实际编译。项目是否编译取决于活动解决方案编译配置中项目复选框的选择。

    配置属性

    配置属性 设置允许您管理整个解决方案的属性。您可以指定是否编译某个项目,以及在什么开发平台上编译项目的什么配置。要指定 配置属性 设置,请展开 配置属性 节点,然后选择 配置。

    配置管理器

    当您在 解决方案属性 对话框中选择点击 配置 时,配置管理器 对话框将展开并允许您在解决方案和项目级别创建和指定配置和平台。

    解决方案配置

    此处指定的是解决方案级别的编译配置,在您选择菜单 编译 > 编译解决方案 时将会被使用。您可以选择以下默认配置:Debug 或 Release,或者添加新配置。如果您认为现有的配置名不合适,您可以重命名它。如果您不再需要某个配置,您可以将其从 解决方案配置 框中删除,这将会删除您为该配置和平台组合指定的所有解决方案及项目配置。

    想要添加新配置:

    1. 从 配置管理器 的 配置 下拉框中选择 <New...>。
    2. 在 新建解决方案配置 窗口中输入新配置的名称。
    3. 如果您想使用现有的解决方案配置设置,请从配置 从...复制设置 中选择一个,否则该处选择 <Empty>。
    4. 如果要同步创建项目配置,请选中 新建项目配置 复选框。

    想要重命名解决方案配置:

    1. 从 解决方案配置 的 配置 下拉框中选择 <Edit...>。
    2. 在 编辑解决方案配置 窗口中选择要修改的配置。
    3. 点击 重命名,然后输入新名称。

    想要删除解决方案配置:

    1. 从 解决方案配置 的 配置 下拉框中选择 <Edit...>。
    2. 在 编辑解决方案配置 窗口中选择要删除的配置。
    3. 点击 移除。

    解决方案平台

    指定您希望解决方案面向的开发平台。默认设为 Any CPU,但您也可以创建新平台。如果现有平台名称不合适,您可以重命名它。如果您不再需要某个平台,可以将其从 解决方案平台 框中删除。这将删除您为该配置和平台组合指定的所有解决方案配置和项目配置。

    想要创建新的解决方案平台:

    1. 从 解决方案平台 的 配置下 拉框中选择 <New...>。
    2. 从 输入或选择新平台 框中选择一个平台:x64 或 x86。
    3. 如果要使用现有解决方案平台中的设置,请从 从...复制设置 中选择一个平台,否则该处选择 <Empty>。
    4. 如果要同步创建项目平台,请选中 新建项目平台 复选框。

    想要重命名解决方案平台:

    1. 从 解决方案平台 的 配置 下拉框中选择 <Edit...>。
    2. 在 编辑解决方案平台 窗口中选择要修改的平台。
    3. 点击 重命名,然后输入新名称。

    想要删除解决方案平台:

    1. 从 解决方案平台 的 配置 下拉框中选择 <Edit...>。
    2. 在 编辑解决方案平台 窗口中选择要删除的平台。
    3. 点击 移除。

    项目上下文

    虽然在指定 解决方案配置 和 解决方案平台 时,已经在解决方案级别指定了配置和开发平台的组合,但 项目上下文 允许您决定最终是否编译某个项目,以及基于什么样的配置和平台去编译项目。下表列出了 项目上下文 及其各自的含义。

    设置 描述
    项目 列出解决方案中的所有项目。
    语言 该项目使用的编程语言。
    配置 列出每个项目的当前编译类型。您可以从下拉列表中选择 Debug、Release 或其他自定义配置。
    平台 选择您希望项目面向的开发平台。
    编译 指定在编译解决方案时是否包含某个项目。默认情况下,所有项目都处于选中状态,您可以取消选中不需编译的项目。

    编译、重新编译和清理项目及解决方案

    配置项目属性和解决方案属性后,您可以编译、重新编译或清理项目和解决方案。

    单个项目

    您可以执行以下步骤来编译、重新编译或清理单个项目:

    1. 在 解决方案资源管理器 中选择一个项目。
    2. 点击菜单栏上的 编译,然后选择以下选项之一:
    选项 描述
    编译 仅编译自上次编译以来修改过的项目文件。
    重新编译 清理项目,然后编译所有项目文件。
    清理 删除所有已编译的项目文件(例如 .dll 文件和 .exe 文件)。

    整个解决方案

    您可以执行以下步骤来编译、重新编译或清理整个解决方案:

    1. 在 解决方案资源管理器 中选择解决方案。
    2. 点击菜单栏上的 编译,然后选择以下选项之一:
    选项 描述
    编译解决方案 仅编译自上次编译以来修改过的解决方案文件。
    重新编译解决方案 清理解决方案,然后编译所有解决方案文件。
    清理解决方案 删除所有已编译的解决方案文件(例如 .dll 文件和 .exe 文件)。
    返回顶部