Анализатор переносимости .NET
Внимание
Порт API устарел в пользу двоичного анализа с помощью средства помощника по обновлению .NET. Серверная служба порта API завершена, поэтому для использования средства необходимо использовать его в автономном режиме. Дополнительные сведения см. в статье .NET API Port README.
Хотите, чтобы ваши библиотеки поддерживали несколько платформ? Хотите узнать, какой объем работ требуется проделать, чтобы ваше приложение .NET Framework работало в .NET Core? Анализатор переносимости .NET — это средство, которое анализирует сборки и предоставляет подробный отчет об отсутствующих API-интерфейсах .NET для приложений или библиотек, которые переносятся на заданные целевые платформы .NET. Анализатор переносимости — это консольное приложение , которое анализирует сборки по указанным файлам или каталогу.
После преобразования проекта на новую платформу, например .NET Core, вы можете использовать анализатор совместимости платформы на основе Roslyn для выявления ИНТЕРФЕЙСов API, которые вызывают PlatformNotSupportedException исключения и другие проблемы совместимости.
Стандартные целевые платформы
- .NET: имеет модульную структуру, поддерживает параллельное установку и предназначен для кроссплатформенных сценариев. Параллельная установка позволяет внедрять новые версии .NET, не нарушая работу других приложений. Если ваша цель состоит в переносе приложения в .NET и поддержке нескольких платформ, это рекомендуемый целевой объект.
- .NET Standard: включает API .NET Standard, доступные во всех реализациях .NET.
- ASP.NET Core: современная веб-платформа, основанная на .NET. Если ваша цель заключается в переносе веб-приложения в .NET (Core) для поддержки нескольких платформ, это рекомендуемый целевой объект.
- Расширения платформы .NET + . Включает API .NET в дополнение к пакету совместимости Windows, который предоставляет многие технологии .NET Framework для Windows.
- Расширения платформы .NET Standard + . Включает API .NET Standard в дополнение к пакету совместимости Windows, который предоставляет многие технологии .NET Framework для Windows.
Как использовать анализатор переносимости .NET
Чтобы начать использование анализатора переносимости .NET в Visual Studio, сначала необходимо клонировать и создать проект dotnet-apiport. Он работает на версиях Visual Studio 2017 и Visual Studio 2019.
Внимание
Анализатор переносимости .NET не поддерживается в Visual Studio 2022.
Представление на уровне решения
Полезный шаг в анализе решения с множеством проектов заключается в визуализации зависимостей, чтобы понять, какое подмножество сборок зависит от чего. Общая рекомендация заключается в применении результатов анализа по принципу "снизу вверх", начиная с листовых узлов в графе зависимостей.
Чтобы получить это, выполните следующую команду:
ApiPort.exe analyze -r DGML -f [directory or file]
При открытии в Visual Studio результат будет выглядеть следующим образом.
Анализ переносимости
Введите следующую команду для анализа текущего каталога:
ApiPort.exe analyze -f .
Чтобы проанализировать определенный список файлов .dll, введите следующую команду:
ApiPort.exe analyze -f first.dll -f second.dll -f third.dll
Чтобы выбрать определенную версию, используйте -t
параметр:
ApiPort.exe analyze -t ".NET, Version=5.0" -f .
Запустите ApiPort.exe -?
, чтобы получить дополнительную помощь.
Рекомендуется включить все связанные .exe и .dll файлы, которые вы владеете и хотите перенести, и исключить файлы, от которых зависит ваше приложение, но вы не владеете и не можете перенести. Это позволит получить наиболее актуальный отчет о переносимости.
Просмотр и интерпретация результатов переносимости
В отчете отображаются только интерфейсы API, которые не поддерживаются целевой платформой. Отчет о переносимости .NET сохраняется в виде файла в указанном формате. По умолчанию используется файл Excel (.xlsx) в текущем каталоге.
Сводка переносимости
В разделе со сводкой по переносимости в этом отчете показан процент переносимости для каждой сборки, включенной в анализ. В предыдущем примере 71,24 % API-интерфейсов .NET Framework, используемых в приложении svcutil
, доступны в .NET Core и расширениях платформы. Если запустить анализатор переносимости .NET для нескольких сборок, каждая сборка должна иметь строку в сводном отчете о переносимости.
Сведения
В разделе Details (Подробные сведения) в отчете указываются API, отсутствующие на любой из выбранных целевых платформ.
- Тип целевого объекта: у типа отсутствует API, необходимый для целевой платформы.
- Целевой элемент: метод отсутствует в Целевой платформе.
- Имя сборки: сборка .NET Framework, в которой находится отсутствующий API.
- Каждая из выбранных целевых платформ является одним столбцом, например .NET Core": "Не поддерживается" означает, что API не поддерживается на этой целевой платформе.
- Рекомендованные изменения: рекомендованный API или технология для замены. В настоящее время это поле является пустым или устарело для многих интерфейсов API. Из-за большого количества API-интерфейсов это значительный вызов, чтобы сохранить его в актуальном состоянии.
Отсутствующие сборки
В отчете может появиться раздел "Сборки, отсутствующие". В данном разделе приводится список сборок, на которые ссылаются проанализированные сборки и которые не были проанализированы. Если эта сборка принадлежит вам, включите ее в анализ переносимости API, чтобы получить по ней подробный отчет о переносимости на уровне API. Если это библиотека стороннего производителя, проверьте наличие актуальной версии, поддерживающей целевую платформу, и рассмотрите возможность перехода на более новую версию. В конечном счете список должен включать все сторонние сборки, от которых зависит ваше приложение, и вы должны проверить, что у них есть версии, которые поддерживают вашу целевую платформу.
См. также
Дополнительные сведения об анализаторе переносимости .NET см. в документации по GitHub.