|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
|
Использовать System.Net.WebSockets.ValueWebSocketReceiveResult в проекте Net Framework 4.826.07.2021, 22:19. Показов 3224. Ответов 16
Метки нет (Все метки)
Имеется проект "1" на Net Framework 4.8 и проект "2" (реализация вебсокет клиента WebSocketClient) на net 5.0, использующий структуру System.Net.WebSockets.ValueWebSocketRece iveResult. Как в проекте "1" использовать WebSocketClient? Указываю ссылку на проект 2, но проект не добавляется.. Я как понял нет обратной совместимости проектов. Как поступают в таких ситуация?
0
|
|
| 26.07.2021, 22:19 | |
|
Ответы с готовыми решениями:
16
.NET Framework 4 в проекте Объясните на пальцах совместимость библиотек в .Net Core, .Net Framework, .Net Standart |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 27.07.2021, 12:10 | ||
|
В вашем случае имеет смысл заменить целевую платформу клиента на .NET Standard 2.0 — тогда ее можно подтягивать и к проектам на .NET FX, и к проектам на .NET 5
1
|
||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
||
| 27.07.2021, 12:21 [ТС] | ||
|
Проект "1" на Net Framework 4.8 можно было бы переделать под .NET 5.0, но там уже не поддерживается WCF (серверная часть). Может как-то можно проще переехать проекту "1" на .NET 5.0 с сохранением функционала WCF?
0
|
||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
|
| 27.07.2021, 12:59 [ТС] | |
|
Правильно ли я понимаю что клиент можно было бы нацелить на платформу .NET Standart 2.1, но проблема кроется в использовании пакета с меньшей версией?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||
| 27.07.2021, 13:38 | ||||
|
В последнем случае проекты под .NET 5.0 будут использовать реализацию для 5.0 со всеми нововведениями, а проекты, целящиеся на .NET Standard — реализацию для обратной совместимости. Таблица совместимости: https://docs.microsoft.com/en-... t-standard Можно прицеплять только библиотеки версии 2.0 или ниже.
1
|
||||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
||
| 27.07.2021, 14:32 [ТС] | ||
|
2. Структура ValueWebSocketReceiveResult не поддерживается .NET Standard 2.0, тоже не вариант. 3. Можно подробнее? Не совсем понимаю про кросс-платформенную реализацию и реализацию для обратной совместимости( Мне нужно чтоб проект WebsocketClient, содержащий структуру ValueWebSocketReceiveResult (который применяется к .NET Standard 2.1, .NET 5.0 либо .NET Core 2.1, 2.2, 3.0, 3.1) можно было использовать в проекте на .NET Framework 4.8.
0
|
||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||
| 27.07.2021, 14:40 | ||
|
Добавлено через 2 минуты да и wcf умеет работать по http, так что его можно дергать как обычный web-api
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||
| 27.07.2021, 14:45 | ||||
|
Приведите пример кода или можете вообще весь проект клиента подцепить, если в нем ничего секретного.
1
|
||||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
|||||||
| 27.07.2021, 23:11 [ТС] | |||||||
0
|
|||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||||||||||||
| 28.07.2021, 10:50 | |||||||||||||||||
Сообщение было отмечено SetAres как решение
Решение<TargetFramework>net5.0</TargetFramework> на <TargetFrameworks>net5.0;netstandard2.0</TargetFrameworks>, чтобы при компиляции создавалось две версии библиотеки.В .NET Standard 2.0 нет класса ArrayPool<T>, но он поставляется отдельным нугет-пакетом — подключите System.Buffers. В .NET 5.0 этот класс идет из коробки, потому в файле проекта сделайте нугет-пакет условным, чтобы он подключался только при компилировании под .NET Standard 2.0:
Сборку из netstandard2.0 цепляйте к проекту на 4.8, сборку из 5.0 — к проекту из 5.0. Если все проекты в одном решении и зависимость добавляется как ProjectReference, то подходящая версия будет выбрана автоматом.
1
|
|||||||||||||||||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
||||||||||||
| 28.07.2021, 15:44 [ТС] | ||||||||||||
|
Вроде всё сделал как описано выше - под NET 5.0 успешно скомпилировался проект, а вот с NET Standart 2.0 не совсем гладко:
(Кстати по аналогии "System.Buffers" пришлось сделать c "System.Threading.Channels" - добавил Nuget пакет и сделал его условным) Кликните здесь для просмотра всего текста
И осталась вот такая непонятная ошибка (на фото).
0
|
||||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||
| 28.07.2021, 16:18 | ||||||||
|
Под TargetFrameworks можете прописать <LangVersion>latest</LangVersion> или заменить new(buffer) на new ArraySegment<byte>(buffer).Можно сигнатуру тоже сделать условной:
То же придется сделать в точках вызова, где используется ReadOnlyMemory: условно менять на ArraySegment. Можно, конечно, убрать из зависимостей .NET 5 и сделать одну зависимость на .NET Standard 2.0, переписав всё под ArraySegment — сборка будет работать под .NET 5, хоть и без нововведений из новых версий.
1
|
||||||||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
|||||||||||||||||
| 28.07.2021, 18:10 [ТС] | |||||||||||||||||
возникает ошибка:
0
|
|||||||||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 28.07.2021, 20:59 | ||
|
Если не лежит, то это может быть глюк Студии — она время от времени не цепляет непрямые зависимости. Закройте решение, удалите из папки с проектом (который 4.8) директории bin и obj, откройте и перестройте решение заново — должно помочь. Если файл лежит, а исключение все равно вываливается, то тут может быть конфликт зависимостей из-за другой сборки: ваш клиент зависит от версии 5.0, а какая-нибудь другая сборка в проекте зависит от 4.7, в итоге она побеждает и ее версия оказывается в директории, на что потом агрится ваша сборка. Откройте свойства dll-файла и в закладке с деталями посмотрите версию: если она не та, которая у вас указана в PackageReference, то это подтвердит второй вариант. В этом случае можно либо обновить другую зависимость до версии, ссылающейся на 5.0, либо настроить редиректы в App.config, либо разнести разные версии сборки по разным папкам и в том же App.config настроить папки, в которых рантайм будет искать сборки. Добавлено через 6 минут А, ну и как вариант можете понизить зависимость вашей либы до 4.7, чтобы она не конфликтовала с другой сборкой.
1
|
||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
||
| 29.07.2021, 16:20 [ТС] | ||
|
Подскажите, пожалуйста, ещё вот что: скажется ли как-нибудь на производительности подобный рефакторинг кода, предложенный Вами выше?
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 29.07.2021, 16:58 | |||
|
По-хорошему сборка с клиентом должна тянуть за собой свои зависимости. Ну, разве на время компиляции повлияют. Что касается кода внутри этих блоков — это уже зависит от того, как он реализован. В целом подозреваю, что код под 4.8 будет работать чуть медленнее и/или мусорить в куче чуть больше — не зря же в .NET 5 его поменяли.
1
|
|||
|
1 / 1 / 0
Регистрация: 17.12.2017
Сообщений: 120
|
|||
| 29.07.2021, 17:26 [ТС] | |||
![]() Спасибо большое за помощь!
0
|
|||
| 29.07.2021, 17:26 | |
|
Помогаю со студенческими работами здесь
17
.NET Framework для разработчика и .NET Framework для простого пользователя это одно и тоже? .NET Framework и .NET Framework Client Profile Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|