Этот вопрос иллюстрируется этим образцом на 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
- это.
Так откуда же вообще ссылка на 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) прекрасно компилировать со ссылкой на сборки, о которых она «не знает».