Xamarin — конвертируем PCL в NetStandard

В далеком 2016 году Xamarin обзавелся поддержкой NetStandard библиотек. Хорошее и удачное решение, я считаю.

 

Что такое NetStandard? Если описать парой слов — это унификация всех доступных API. Это своего рода гарант того, что эти самые API будут доступны по всех рантаймах.

 

И если ранее проекты на Xamarin поддерживали только Portable Class Library и Shared Project, то теперь была добавлена поддержка NetStandard.

Только вот, к сожалению, той заветной кнопки «конвертировать мой супер проект в NetStandard» нету и придется все делать своими силами.

 

Для того, чтобы быть на одной волне (и увековечить рукописи), начнем с самого начала, будто у нас нет никакого супер-пупер проекта.

 

Теперь заходим в настройки нашего PCL проекта (правая кнопка мыши по проекту с названием ConvertPCLToNetStandard и там выбираем Options).

 

Переходим на вкладку General и меняем фреймворк с .Net Portable на .Net Standard версии 1.4.

Change target framework

 

Теперь необходимо руками внести некоторые изменения в csproj файл нашего проекта. Для этого снова вызываем контекстное меню на проекте и идем в Tools > Edit File. Перед нами отобразится содержимое файла проекта.

Аккуратно чистим первый PropertyGroup блок — удаляем все теги, за исключением параметров RootNamespace и AssemblyName. После чего, меняем корневой тег с

на

Затем, добавляем две строки в этот PropertyGroup блок:

И удаляем блоки вида  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> — таких блоков должно быть два — Release и Debug.

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

 

Давайте бороться с этим делом. Сперва удаляем папку Properties, а следом — файлы project.json и project.lock.json. Затем удаляем файлы ConvertPCLToNetStandard.csproj.nuget.cacheConvertPCLToNetStandard.nuget.props и ConvertPCLToNetStandard.nuget.targets.

 

Ну, почти все. Осталось добавить NuGet пакет Xamarin.Forms и сбилдить проект.

 

Добавить комментарий