0Pricing
C# Academy · Урок

Библиотека и приложение в .csproj, семантическое версионирование

Разберитесь в различиях между библиотекой и приложением в .csproj, узнайте, как NuGet использует библиотеки и как семантическое версионирование (MAJOR.MINOR.PATCH) определяет выпуск версий.

«Библиотека и приложение в .csproj, семантическое версионирование» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.

Понятия и цели

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

  • Файл .csproj библиотеки: предназначен для подключения и упаковки для NuGet
  • Файл .csproj приложения: создаёт исполняемый файл для конечных пользователей
  • Семантическое версионирование: MAJOR.MINOR.PATCH

Библиотека и приложение: краткий обзор

  • Библиотека: ориентируется на платформы, чтобы максимально расширить повторное использование; содержит метаданные (PackageId, Version, Authors).
  • Приложение: имеет точку входа и публикует готовый к запуску результат.
  • NuGet упаковывает библиотеки в файл .nupkg; приложения обычно публикуются, а не упаковываются.

Демонстрация версии сборки

Библиотека предоставляет версию; потребители видят её при подключении пакета.

using System;
using System.Reflection;

// Simple demo: read the assembly version at runtime.
// In a packed library, this reflects the version consumers see.
public class Program
{
  public static void Main(string[] args)
  {
    Version v = Assembly.GetExecutingAssembly().GetName().Version;
    Console.WriteLine("Assembly version: " + (v == null ? "unknown" : v.ToString()));
  }
}

Сравнение SemVer (основы)

Сравнивайте версии, чтобы определить наличие обновлений: сначала MAJOR, затем MINOR, затем PATCH.

using System;

// Minimal SemVer (MAJOR.MINOR.PATCH) parsing and comparison.
// Ignores prerelease/build metadata for simplicity (good enough for beginners).
public class SemVer : IComparable<SemVer>
{
  public int Major;
  public int Minor;
  public int Patch;

  public static bool TryParse(string s, out SemVer v)
  {
    v = null;
    if (string.IsNullOrEmpty(s)) return false;
    string[] parts = s.Split('.');
    if (parts.Length < 3) return false;
    int a, b, c;
    if (!int.TryParse(parts[0], out a)) return false;
    if (!int.TryParse(parts[1], out b)) return false;
    if (!int.TryParse(parts[2], out c)) return false;
    v = new SemVer { Major = a, Minor = b, Patch = c };
    return true;
  }

  public int CompareTo(SemVer other)
  {
    if (other == null) return 1;
    if (Major != other.Major) return Major.CompareTo(other.Major);
    if (Minor != other.Minor) return Minor.CompareTo(other.Minor);
    return Patch.CompareTo(other.Patch);
  }

  public override string ToString()
  {
    return Major + "." + Minor + "." + Patch;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    SemVer a, b;
    if (SemVer.TryParse("1.4.2", out a) && SemVer.TryParse("1.5.0", out b))
    {
      int cmp = a.CompareTo(b);
      Console.WriteLine(a + " vs " + b + " -> " + (cmp < 0 ? "older" : (cmp > 0 ? "newer" : "equal")));
    }
  }
}

Правила изменения версии

Правила изменения:

  • MAJOR: несовместимые изменения API
  • MINOR: новые возможности, совместимые с предыдущими версиями
  • PATCH: исправления ошибок и служебные изменения без изменения API

Совет: описывайте изменения в кратком журнале.

Проверка перед упаковкой

  • Заданы целевые платформы библиотеки (например, netstandard)
  • Заполнены PackageId, Version, Authors
  • Добавлены лицензия и README
  • Публичный API проверен на несовместимые изменения

Правило SemVer

Быстрая проверка: какое изменение обычно требует увеличения версии MAJOR при семантическом версионировании?

Итоги

Итоги: создавайте библиотеки для повторного использования и упаковки в NuGet; приложения являются исполняемыми файлами. Используйте MAJOR.MINOR.PATCH, чтобы безопасно сообщать об изменениях.

Часто задаваемые вопросы

Урок «Библиотека и приложение в .csproj, семантическое версионирование» бесплатный?

Да — полный текст урока «Библиотека и приложение в .csproj, семантическое версионирование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.

Чему я научусь в уроке «Библиотека и приложение в .csproj, семантическое версионирование»?

Разберитесь в различиях между библиотекой и приложением в .csproj, узнайте, как NuGet использует библиотеки и как семантическое версионирование (MAJOR.MINOR.PATCH) определяет выпуск версий. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Библиотека и приложение в .csproj, семантическое версионирование»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Библиотека и приложение в .csproj, семантическое версионирование
  2. Упаковка и публикация в NuGet
  3. Мультитаргетинг
← Назад к C# Academy