Поделиться через


Упорядочение проекта для поддержки .NET Framework и .NET

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

  • Объединение существующих проектов и проектов .NET в один проект

    Преимущества:

    • Упрощает процесс сборки путем компиляции одного проекта, а не нескольких проектов, предназначенных для разных версий или платформ .NET Framework.
    • Упрощает управление файлами исходного кода для нескольких целевых проектов, так как необходимо управлять одним файлом проекта. При добавлении или удалении исходных файлов альтернативные варианты требуют ручной синхронизации этих файлов с другими проектами.
    • Легко создать пакет NuGet для использования.
    • Позволяет писать код для определенной версии .NET Framework с помощью директив компилятора.

    Недостаток:

    • Требует, чтобы разработчики использовали Visual Studio 2019 или более позднюю версию для открытия существующих проектов. Для поддержки более старых версий Visual Studio рекомендуется сохранить файлы проекта в разных папках .
  • Держите все проекты отдельно

    Преимущества:

    • Поддерживает разработку существующих проектов для разработчиков и участников, которые могут не иметь Visual Studio 2019 или более поздней версии.
    • Снижает вероятность создания новых ошибок в существующих проектах, так как в этих проектах не требуется никаких изменений в коде.

Рассмотрим этот пример репозитория GitHub. На рисунке ниже показано, как расположен этот репозиторий:

Существующая схема структуры проекта

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

Замена существующих проектов несколькими целевыми проектами .NET

Переорганизуйте репозиторий таким образом, чтобы все существующие файлы *.csproj были удалены, и создается один файл *.csproj , предназначенный для нескольких платформ. Это отличный вариант, так как один проект может компилироваться для разных платформ. Он также имеет возможность обрабатывать различные параметры компиляции и зависимости для каждой целевой платформы.

диаграмма проекта, предназначенного для работы с несколькими фреймворками

Пример кода см. в разделе GitHub.

Изменения, которые следует заметить:

  • Замена packages.config и *.csproj новым .NET *.csproj. Пакеты NuGet указываются с <PackageReference> ItemGroup.

Сохранение существующих проектов и создание проекта .NET

Если есть проекты, предназначенные для более старых платформ, вы можете оставить эти проекты без изменений и использовать проект .NET для более новых платформ.

Проект .NET с существующими проектами в другой схеме папок

Пример кода см. в разделе GitHub.

Проекты .NET и существующие проекты хранятся в отдельных папках. Сохранение проектов в отдельных папках позволяет избежать принудительного использования Visual Studio 2019 или более поздних версий. Вы можете создать отдельное решение, которое открывает только старые проекты.

См. также