Руководство. Создание библиотеки классов .NET с помощью Visual Studio Code

В этом руководстве вы создадите простую служебную библиотеку с одним методом для обработки строк.

Библиотека классов определяет типы и методы, которые могут быть вызваны из любого приложения. Если библиотека предназначена для .NET Standard 2.0, она может быть вызвана любой реализацией .NET (включая .NET Framework), которая поддерживает .NET Standard 2.0. Если библиотека предназначена для .NET 8, она может вызываться любым приложением, предназначенным для .NET 8. В этом руководстве показано, как использовать .NET 8.

После создания библиотеки классов ее можно распространить как независимый компонент или включить в состав одного или нескольких пакетов приложения.

Необходимые компоненты

Создание решения

Начните с создания пустого решения для размещения проекта библиотеки классов. Решение служит контейнером для одного или нескольких проектов. Вы будете добавлять дополнительные связанные проекты в одно решение.

  1. Запустите Visual Studio Code.

  2. В главном меню выберите Файл>Открыть папку (в macOS щелкните Открыть...).

  3. В диалоговом окне Открыть папку создайте папку ClassLibraryProjects и щелкните Выбор папки (в macOS щелкните Открыть).

  4. Откройте терминал в Visual Studio Code, выбрав в основном меню пункт Вид>Терминал.

    Откроется окно Терминал с командной строкой в папке ClassLibraryProjects.

  5. В окне терминала введите следующую команду:

    dotnet new sln
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Solution File" was created successfully.
    

Создание проекта библиотеки классов

Добавьте в решение новый проект библиотеки классов .NET с именем "StringLibrary".

  1. В терминале выполните следующую команду, чтобы создать проект библиотеки классов:

    dotnet new classlib -o StringLibrary
    

    Команда -o или --output задает расположение для размещения созданных выходных данных.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект библиотеки в решение, выполните следующую команду:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Убедитесь, что библиотека предназначена для .NET 8. В обозревателе откройте файл StringLibrary/StringLibrary.csproj.

    Элемент TargetFramework показывает, что проект предназначен для .NET 8.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Откройте файл Class1.cs и замените его содержимое следующим кодом:

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    Библиотека классов UtilityLibraries.StringLibrary содержит метод StartsWithUpper, который возвращает значение Boolean, указывающее, является ли первым символом текущего экземпляра строки символ верхнего регистра. Символы верхнего регистра определяются по стандарту Юникод. Метод Char.IsUpper(Char) возвращает true, если символ является символом верхнего регистра.

    Метод StartsWithUpper реализуется как метод расширения, чтобы вызывать его можно было так же, как любой член класса String.

  5. Сохраните файл.

  6. Выполните следующую команду, чтобы выполнить сборку решения и убедиться, что проект компилируется без ошибок.

    dotnet build
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Microsoft (R) Build Engine version 17.8.0+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net8.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Добавление консольного приложения в решение

Добавьте консольное приложение, использующее библиотеку классов. В приложении пользователю будет предложено ввести строку и сообщить, начинается ли строка с символа верхнего регистра.

  1. В терминале выполните следующую команду, чтобы создать проект консольного приложения:

    dotnet new console -o ShowCase
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект консольного приложения в решение, выполните следующую команду:

    dotnet sln add ShowCase/ShowCase.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Откройте файл ShowCase/Program.cs и замените все его содержимое следующим кодом:

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    В этом коде используется переменная row для сохранения количества строк данных, записываемых в окно консоли. Всякий раз, когда оно достигает значения 25 или превышает его, код очищает окно консоли и отображается сообщение для пользователя.

    Сама программа предлагает пользователю ввести строку. Она сообщает, начинается ли строка с символа верхнего регистра. Если пользователь нажимает клавишу ВВОД, не введя никакой строки, приложение завершает свою работу и окно консоли закрывается.

  4. Сохранение изменений.

Добавление ссылки на проект

Изначально новый проект консольного приложения не имеет доступа к библиотеке классов. Чтобы позволить приложению вызывать методы из библиотеки классов, создайте в проекте ссылку на проект библиотеки классов.

  1. Выполните следующую команду:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Выполнить приложение

  1. В терминале выполните следующую команду:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Проверьте, как работает программа: вводите строки и нажимайте клавишу ВВОД. Чтобы выйти, нажмите клавишу ВВОД.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Дополнительные ресурсы

Следующие шаги

В этом руководстве вы создали решение, добавили проект библиотеки и добавили проект консольного приложения, использующего библиотеку. В следующем руководстве вы добавите в решение проект модульного теста.

В этом руководстве вы создадите простую служебную библиотеку с одним методом для обработки строк.

Библиотека классов определяет типы и методы, которые могут быть вызваны из любого приложения. Если библиотека предназначена для .NET Standard 2.0, она может быть вызвана любой реализацией .NET (включая .NET Framework), которая поддерживает .NET Standard 2.0. Если библиотека предназначена для .NET 7, ее можно вызвать любым приложением, предназначенным для .NET 7. В этом руководстве показано, как нацелиться на .NET 7.

После создания библиотеки классов ее можно распространить как независимый компонент или включить в состав одного или нескольких пакетов приложения.

Необходимые компоненты

Создание решения

Начните с создания пустого решения для размещения проекта библиотеки классов. Решение служит контейнером для одного или нескольких проектов. Вы будете добавлять дополнительные связанные проекты в одно решение.

  1. Запустите Visual Studio Code.

  2. В главном меню выберите Файл>Открыть папку (в macOS щелкните Открыть...).

  3. В диалоговом окне Открыть папку создайте папку ClassLibraryProjects и щелкните Выбор папки (в macOS щелкните Открыть).

  4. Откройте терминал в Visual Studio Code, выбрав в основном меню пункт Вид>Терминал.

    Откроется окно Терминал с командной строкой в папке ClassLibraryProjects.

  5. В окне терминала введите следующую команду:

    dotnet new sln
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Solution File" was created successfully.
    

Создание проекта библиотеки классов

Добавьте в решение новый проект библиотеки классов .NET с именем "StringLibrary".

  1. В терминале выполните следующую команду, чтобы создать проект библиотеки классов:

    dotnet new classlib -o StringLibrary
    

    Команда -o или --output задает расположение для размещения созданных выходных данных.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект библиотеки в решение, выполните следующую команду:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Убедитесь, что библиотека предназначена для .NET 7. В обозревателе откройте файл StringLibrary/StringLibrary.csproj.

    Элемент TargetFramework показывает, что проект предназначен для .NET 7.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net7.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Откройте файл Class1.cs и замените его содержимое следующим кодом:

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    Библиотека классов UtilityLibraries.StringLibrary содержит метод StartsWithUpper, который возвращает значение Boolean, указывающее, является ли первым символом текущего экземпляра строки символ верхнего регистра. Символы верхнего регистра определяются по стандарту Юникод. Метод Char.IsUpper(Char) возвращает true, если символ является символом верхнего регистра.

    Метод StartsWithUpper реализуется как метод расширения, чтобы вызывать его можно было так же, как любой член класса String.

  5. Сохраните файл.

  6. Выполните следующую команду, чтобы выполнить сборку решения и убедиться, что проект компилируется без ошибок.

    dotnet build
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Microsoft (R) Build Engine version 16.7.4+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net7.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Добавление консольного приложения в решение

Добавьте консольное приложение, использующее библиотеку классов. В приложении пользователю будет предложено ввести строку и сообщить, начинается ли строка с символа верхнего регистра.

  1. В терминале выполните следующую команду, чтобы создать проект консольного приложения:

    dotnet new console -o ShowCase
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект консольного приложения в решение, выполните следующую команду:

    dotnet sln add ShowCase/ShowCase.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Откройте файл ShowCase/Program.cs и замените все его содержимое следующим кодом:

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    В этом коде используется переменная row для сохранения количества строк данных, записываемых в окно консоли. Всякий раз, когда оно достигает значения 25 или превышает его, код очищает окно консоли и отображается сообщение для пользователя.

    Сама программа предлагает пользователю ввести строку. Она сообщает, начинается ли строка с символа верхнего регистра. Если пользователь нажимает клавишу ВВОД, не введя никакой строки, приложение завершает свою работу и окно консоли закрывается.

  4. Сохранение изменений.

Добавление ссылки на проект

Изначально новый проект консольного приложения не имеет доступа к библиотеке классов. Чтобы позволить приложению вызывать методы из библиотеки классов, создайте в проекте ссылку на проект библиотеки классов.

  1. Выполните следующую команду:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Выполнить приложение

  1. В терминале выполните следующую команду:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Проверьте, как работает программа: вводите строки и нажимайте клавишу ВВОД. Чтобы выйти, нажмите клавишу ВВОД.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Дополнительные ресурсы

Следующие шаги

В этом руководстве вы создали решение, добавили проект библиотеки и добавили проект консольного приложения, использующего библиотеку. В следующем руководстве вы добавите в решение проект модульного теста.

В этом руководстве вы создадите простую служебную библиотеку с одним методом для обработки строк.

Библиотека классов определяет типы и методы, которые могут быть вызваны из любого приложения. Если библиотека предназначена для .NET Standard 2.0, она может быть вызвана любой реализацией .NET (включая .NET Framework), которая поддерживает .NET Standard 2.0. Если библиотека предназначена для .NET 6, ее можно вызвать с помощью любого приложения, предназначенного для .NET 6. В этом руководстве показано, как выполнить нацеливание на .NET 6.

После создания библиотеки классов ее можно распространить как независимый компонент или включить в состав одного или нескольких пакетов приложения.

Необходимые компоненты

Создание решения

Начните с создания пустого решения для размещения проекта библиотеки классов. Решение служит контейнером для одного или нескольких проектов. Вы будете добавлять дополнительные связанные проекты в одно решение.

  1. Запустите Visual Studio Code.

  2. В главном меню выберите Файл>Открыть папку (в macOS щелкните Открыть...).

  3. В диалоговом окне Открыть папку создайте папку ClassLibraryProjects и щелкните Выбор папки (в macOS щелкните Открыть).

  4. Откройте терминал в Visual Studio Code, выбрав в основном меню пункт Вид>Терминал.

    Откроется окно Терминал с командной строкой в папке ClassLibraryProjects.

  5. В окне терминала введите следующую команду:

    dotnet new sln
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Solution File" was created successfully.
    

Создание проекта библиотеки классов

Добавьте в решение новый проект библиотеки классов .NET с именем "StringLibrary".

  1. В терминале выполните следующую команду, чтобы создать проект библиотеки классов:

    dotnet new classlib -f net6.0 -o StringLibrary
    

    --framework Или -f команда изменяет целевую платформу по умолчанию на net6.0 версию.

    Команда -o или --output задает расположение для размещения созданных выходных данных.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Class library" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on StringLibrary\StringLibrary.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект библиотеки в решение, выполните следующую команду:

    dotnet sln add StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `StringLibrary\StringLibrary.csproj` added to the solution.
    
  3. Убедитесь, что эта библиотека нацелена на .NET 6. В обозревателе откройте файл StringLibrary/StringLibrary.csproj.

    Элемент TargetFramework показывает, что проект предназначен для .NET 6.0.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
      </PropertyGroup>
    
    </Project>
    
  4. Откройте файл Class1.cs и замените его содержимое следующим кодом:

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    

    Библиотека классов UtilityLibraries.StringLibrary содержит метод StartsWithUpper, который возвращает значение Boolean, указывающее, является ли первым символом текущего экземпляра строки символ верхнего регистра. Символы верхнего регистра определяются по стандарту Юникод. Метод Char.IsUpper(Char) возвращает true, если символ является символом верхнего регистра.

    Метод StartsWithUpper реализуется как метод расширения, чтобы вызывать его можно было так же, как любой член класса String.

  5. Сохраните файл.

  6. Выполните следующую команду, чтобы выполнить сборку решения и убедиться, что проект компилируется без ошибок.

    dotnet build
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net6.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    

Добавление консольного приложения в решение

Добавьте консольное приложение, использующее библиотеку классов. В приложении пользователю будет предложено ввести строку и сообщить, начинается ли строка с символа верхнего регистра.

  1. В терминале выполните следующую команду, чтобы создать проект консольного приложения:

    dotnet new console -f net6.0 -o ShowCase
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    The template "Console Application" was created successfully.
    Processing post-creation actions...
    Running 'dotnet restore' on ShowCase\ShowCase.csproj...
      Determining projects to restore...
      Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms).
    Restore succeeded.
    
  2. Чтобы добавить проект консольного приложения в решение, выполните следующую команду:

    dotnet sln add ShowCase/ShowCase.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Project `ShowCase\ShowCase.csproj` added to the solution.
    
  3. Откройте файл ShowCase/Program.cs и замените все его содержимое следующим кодом:

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    

    В этом коде используется переменная row для сохранения количества строк данных, записываемых в окно консоли. Всякий раз, когда оно достигает значения 25 или превышает его, код очищает окно консоли и отображается сообщение для пользователя.

    Сама программа предлагает пользователю ввести строку. Она сообщает, начинается ли строка с символа верхнего регистра. Если пользователь нажимает клавишу ВВОД, не введя никакой строки, приложение завершает свою работу и окно консоли закрывается.

  4. Сохранение изменений.

Добавление ссылки на проект

Изначально новый проект консольного приложения не имеет доступа к библиотеке классов. Чтобы позволить приложению вызывать методы из библиотеки классов, создайте в проекте ссылку на проект библиотеки классов.

  1. Выполните следующую команду:

    dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
    

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
    

Выполнить приложение

  1. В терминале выполните следующую команду:

    dotnet run --project ShowCase/ShowCase.csproj
    
  2. Проверьте, как работает программа: вводите строки и нажимайте клавишу ВВОД. Чтобы выйти, нажмите клавишу ВВОД.

    Выходные данные в терминале выглядят примерно так, как в следующем примере:

    Press <Enter> only to exit; otherwise, enter a string and press <Enter>:
    
    A string that starts with an uppercase letter
    Input: A string that starts with an uppercase letter
    Begins with uppercase? : Yes
    
    a string that starts with a lowercase letter
    Input: a string that starts with a lowercase letter
    Begins with uppercase? : No
    

Дополнительные ресурсы

Следующие шаги

В этом руководстве вы создали решение, добавили проект библиотеки и добавили проект консольного приложения, использующего библиотеку. В следующем руководстве вы добавите в решение проект модульного теста.