Организация проекта для параллельной поддержки .NET Framework и .NET

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

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

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

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

    Недостаток:

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

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

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

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

Existing project structure diagram

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

Замена существующих проектов на проект .NET, предназначенный для нескольких платформ

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

project that targets multiple frameworks diagram

Пример кода см. на GitHub.

Обратите внимание на следующие изменения:

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

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

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

.NET project with existing projects in a different folder diagram

Пример кода см. на GitHub.

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

См. также