Skip to content
This repository has been archived by the owner on Aug 25, 2022. It is now read-only.

Поддержка .NET Standard #13

Open
rtnm opened this issue Oct 12, 2018 · 4 comments
Open

Поддержка .NET Standard #13

rtnm opened this issue Oct 12, 2018 · 4 comments

Comments

@rtnm
Copy link

rtnm commented Oct 12, 2018

При добавлении NuGet-пакета Yandex.Metrica.Xamarin(2.0.0), в общий проект Xamarin.Forms с целевой платформой .NET Standard 2.0, Visual Studio for Mac выдает предупреждение:

Warning NU1701: Package 'Yandex.Metrica.Xamarin 2.0.0' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. (NU1701)

При этом проблем в дальнейшем не возникает, но данное сообщение очень смущает.
Планируется ли выпуск плагина для .NET Standard 2.0 (или ниже)?
Можно ли смело игнорировать данное предупреждение?

@rtnm rtnm changed the title Поддержка .NET Standart Поддержка .NET Standard Oct 12, 2018
@NesterovichAlexey
Copy link
Contributor

Поддержка .NET Standard планируется.
Если метрика инициализируются и отправляются события, то можно игнорировать.

@picolino
Copy link

picolino commented Nov 1, 2019

Прошло больше года с момента создания Issue.
И уже больше года мы сидим с warning-ом на проектах .NET Standard.

@picolino
Copy link

picolino commented Nov 1, 2019

Самостоятельная попытка перенести код на .NET Standard 2.0 не увенчалась успехом.

Что было выполнено:
Код Yandex.Metrica.Xamarin.PCL

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <RootNamespace>YandexMetricaPCL</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="..\SharedAssemblyInfo.cs" Link="Properties\SharedAssemblyInfo.cs" />
  </ItemGroup>
</Project>

При таком подходе и использовании TargetFramework нацеленным на netstandard2.0 при сборке YandexMetrica.Xamarin.AndroidBinding - собирается нормально.
А вот сборка Yandex.Metrica.Xamarin.iOSBinding происходит с ошибкой:

The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.

Возможности "подцепить" пакет netstandard напрямую к этому проекту нет, так как проект Yandex.Metrica.Xamarin.iOSBinding по-умолчанию нацелен на Xamarin.iOS, Version=1.0. При этом это последняя версия пакета. Для этой версии поддержка .NET Standard судя по всему не реализована.

Если осуществлять добавление NuGet-пакета .NET Standard Library к проекту, то в ссылках (references) данный NuGet-пакет не фигурирует, такое ощущение, что просто не добавляется.

Если осуществить подключение netstandard библиотеки напрямую, то проект корректно собирается:

<ItemGroup>
    <Reference Include="netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\netstandard.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="Xamarin.iOS" />
  </ItemGroup>

Причем у меня почему-то автоматически подцеплялась версия 2.1, даже если я указывал добавление 2.0.

В заключение: В Xamarin.iOS нет автоматической поддержки .NET Standard. Даже создание нового проекта Xamarin iOS Binding Library и перенос всего кода туда не решает проблемы с .NET Standard. Получается, что на текущий момент проекты Xamarin iOS Binding Library несовместимы с проектами .NET Standard

Что делать: Вопрос остается открытым. Нехорошо использовать предлагаемое решение на production.

На всякий случай сделал коммит (49bff91) с описанными в данном комментарии изменениями. Возможно, появятся какие-то идеи на этот счет.

@dzinad
Copy link
Collaborator

dzinad commented Nov 23, 2020

В ближайшее время поддержка .NET Standard, к сожалению, не планируется, так как эта задача не самого высокого приоритета.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants