Xamarin и Net Standard - Как работает разрешение сборок в этом примере - PullRequest
0 голосов
/ 08 мая 2018

Этот вопрос иллюстрируется этим образцом на github . Вы можете попробовать это с веткой SignalR_rc1_final.

Это решение со стандартной библиотекой .Net (Xamarin Forms) и приложением для iOS. В библиотеке я ссылаюсь на пакет nuget Клиент AspNetCore Signalr

Проект iOS не создается с использованием ссылок. Ошибка:

Не удалось разрешить ссылку "System.Buffers.IBufferWriter`1" из "System.Memory, версия = 4.0.1.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51"

У меня вопрос , а не о сигнализаторе или получении ошибки как таковой. В их github repo .

уже открыт билет.

Я хотел бы понять, почему компилятор пытается разрешить System.Buffers.IBufferWriter, найденный в System.Memory, Version=4.0.1.0 (подтверждено здесь )? Действительно, System.Memory является ссылкой в ​​SignalR, но версия 4.5.0-rc1 - это.

enter image description here

Так откуда же вообще ссылка на System.Memory, Version=4.0.1.0? Какой механизм разрешения событий скрыт от меня и как я могу лучше его понять и понять?

UPDATE

Я начинаю понимать, что происходит. Я опубликую ответ, как только разберусь с ним, если никто не сделает этого первым.

Библиотека SignalR предназначена для netstandard2.0 и netcore2.1. System.Memory version 4.0.1.0 находится в среде выполнения Net Core 2.1 и, следовательно, не является отдельным пакетом nuget. Вот почему я не вижу его в дереве зависимостей nuget на изображении.

Так что где-то SignalR использует его при компиляции для netcore2.1. Что я до сих пор не понимаю, и как может netstandard2.0 версия (которую использует Xamarin) прекрасно компилировать со ссылкой на сборки, о которых она «не знает».

...