【C++】Visual Studio教程(三) - 项目和解决方案

00. 目录

01. 概述

解决方案是一个容器,用于组织一个或多个相关的代码项目,例如,一个类库项目和一个对应的测试项目。 我们会介绍项目的属性和其中包含的一些文件。 此外,我们还会在一个项目中创建对另一项目的引用。

尽管其名称如此,但解决方案并不是“答案”。 解决方案仅仅是 Visual Studio 用来组织一个或多个相关项目的容器。 在 Visual Studio 中打开解决方案时,它会自动加载其中包含的所有项目。

02. 创建解决方案

我们先创建一个空的解决方案。 对 Visual Studio 有一定了解后,可能就不会经常创建空的解决方案。 在 Visual Studio 中创建新项目时,如果没有打开的解决方案,它会自动创建一个解决方案来存放项目。

  1. 打开 Visual Studio。

  2. 在“开始”窗口中,选择“创建新项目”。

  3. 在“创建新项目”页上,在搜索框中输入“空白解决方案”,选择“空白解决方案”模板,然后选择“下一步” 。
    在这里插入图片描述

  4. 将解决方案命名为“QuickSolution”,然后选择“创建” 。

    解决方案将显示在 Visual Studio 窗口右侧的解决方案资源管理器中 。 你可能会经常使用“解决方案资源管理器”来浏览项目的内容 。

温馨提示

如果你安装了多个工作负载,那么“空白解决方案”模板可能不会出现在搜索结果列表的顶部。 尝试滚动到列表的“基于你搜索的其他结果”部分。 它应该出现在那里。

03. 添加项目

现在我们将第一个项目添加到解决方案。 先从空项目开始,将所需项添加到项目中。

  1. 在“解决方案资源管理器”中的“解决方案 ‘QuickSolution’”的右键菜单或上下文菜单中,依次选择“添加”>“新建项目” 。

    随即打开显示“添加新项目”的对话框 。

  2. 在顶部的搜索框中输入文本“空”,然后在“语言”下选择“C#”。

  3. 然后选择“空项目 (.NET Framework)”模板并选择“下一步” 。

  4. 将项目命名为“QuickDate”,然后选择“创建” 。

    随后名为“QuickDate”的项目出现在“解决方案资源管理器”中的解决方案下 。 目前它包含一个名为“App.config”的文件 。

备注

如果没有看到“空项目(.NET Framework)”模板,则需要安装 .NET 桌面开发 Visual Studio 工作负载 。 Visual Studio 使用基于工作负载的安装旨在仅安装所执行的开发类型需要的组件。

在创建新项目时安装新工作负载的简便方法是,在显示“未找到你要查找的内容”的文本下选择“安装更多工具和功能”链接 。 在“Visual Studio 安装程序”启动后,选择“.NET 桌面开发”工作负载,再单击“修改”按钮 。

04. 向项目添加一个项

我们有一个空项目。 我们来添加代码文件。

  1. 在“解决方案资源管理器”中的“QuickDate”项目的右键菜单或上下文菜单中,依次选择“添加” > “新建项” 。

    此时将打开“添加新项”对话框。

  2. 展开“Visual C# 项”,然后选择“代码” 。 在中间窗格中,选择“类”项模板。 将类命名为“Calendar”,然后选择“添加”按钮 。

    名为“Calendar.cs”的文件已添加到项目。 末尾的 .cs 是 C# 代码文件的文件扩展名。 文件出现在“解决方案资源管理器”中的可视项目层次结构中,其内容在编辑器中打开。

  3. 将 Calendar.cs 文件的内容替换为以下代码:

using System;

namespace QuickDate
{
    internal class Calendar
    {
        static void Main(string[] args)
        {
            DateTime now = GetCurrentDate();
            Console.WriteLine($"Today's date is {now}");
            Console.ReadLine();
        }

        internal static DateTime GetCurrentDate()
        {
            return DateTime.Now.Date;
        }
    }
}

你无需了解代码的作用,但是如果你想知道,可通过按 Ctrl+F5 来运行该程序,即可看到程序将今天的日期打印到控制台(或标准输出)窗口 。

05. 添加第二个项目

包含多个项目的解决方案很常见,而且这些项目通常相互引用。 解决方案中的一些项目可能是类库,可能是可执行应用程序,也可能是单元测试项目或网站。

我们来向解决方案添加单元测试项目。 这次我们从项目模板开始,所以不需要向项目添加额外的代码文件。

  1. 在“解决方案资源管理器”中的“解决方案 ‘QuickSolution’”的右键菜单或上下文菜单中,依次选择“添加” > “新建项目” 。

  2. 在“添加新项目”对话框中,在顶部的搜索框输入文本“单元测试”,然后在“语言”下选择“C#”。

  3. 选择“MSTest 测试项目(.NET Core)”项目模板,然后选择“下一步” 。

  4. 将项目命名为“QuickTest”,然后选择“创建” 。

    第二个项目已添加到“解决方案资源管理器”,且编辑器中打开了名为 UnitTest1.cs 的文件。
    在这里插入图片描述

06. 添加项目引用

我们将使用新的单元测试项目测试“QuickDate”项目中的方法,因此需要添加对该项目的引用。 创建引用会在两个项目间创建生成依赖关系,这意味着生成解决方案时,会先生成“QuickDate”,再生成“QuickTest”。

  1. 选择“QuickTest”项目中的“依赖关系”节点,然后在右键菜单或上下文菜单中选择“添加项目引用…” 。

    打开“引用管理器”对话框。

  2. 在左侧窗格中,展开“项目”,然后选择“解决方案” 。 在中间窗格中,选择“QuickDate”旁的复选框,然后选择“确定” 。

    已添加对“QuickDate”项目的引用。
    在这里插入图片描述

07. 添加测试代码

  1. 现在我们向 C# 测试代码文件添加测试代码。 将 UnitTest1.cs 的内容替换为以下代码:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace QuickTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestGetCurrentDate()
            {
                Assert.AreEqual(DateTime.Now.Date, QuickDate.Calendar.GetCurrentDate());
            }
        }
    }
    

    你会看到某些代码下出现红色波浪线。 将测试项目设为“QuickDate”项目的友元程序集来解决此错误。

  2. 返回 QuickDate 项目,打开 Calendar.cs 文件(如果它尚未打开)。 将以下 using 语句和 InternalsVisibleToAttribute 属性添加到文件顶部以解决测试项目中的错误。

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("QuickTest")]

代码文件应如下所示:
在这里插入图片描述

08. 项目属性

包含 InternalsVisibleToAttribute 属性的 Calendar.cs 文件中的行引用了“QuickTest”项目的程序集名称(文件名)。 程序集名称可能不会始终与项目名称相同。 若要查看项目的程序集名称,请打开项目属性。

  1. 在“解决方案资源管理器”中,选择“QuickTest”项目。 在右键菜单或上下文菜单中,选择“属性”,或只按 Alt+Enter 即可。

    项目的“属性页”随即在“应用程序”选项卡上打开。属性页包含项目的各种设置。 请注意,“QuickTest”项目的程序集名称确实为“QuickTest”。 如果想要更改,可在此处更改。 随后,在生成测试项目时,生成的二进制文件的名称将从“QuickTest.dll”更改为所选择的名称。
    在这里插入图片描述

  2. 了解项目属性页的其他选项卡,例如“生成”和“调试”。 这些选项卡对不同类型的项目是不同的。

09. 附录

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值