Невозможно загрузить сборки для стандартной библиотеки .Net (System.Text.Json)C#

Место общения программистов C#
Ответить
Anonymous
 Невозможно загрузить сборки для стандартной библиотеки .Net (System.Text.Json)

Сообщение Anonymous »

Я пишу библиотеку .Net Standard 2.0, которая будет использоваться двоичным модулем PowerShell. По сути, библиотека будет представлять собой API-клиент с множеством классов для обработки ответов JSON. Прежде чем пытаться десериализовать строки, я подтвердил, что API без проблем предоставляет строку в кодировке JSON.

Поскольку он был совместим с .Net Standard 2.0 при использовании NuGet. пакет, я подумал, что попробую переключиться на System.Text.Json вместо использования NewtonSoft. Однако, похоже, у него нет той версии конкретных сборок, которая требуется на определенных платформах.

Моя среда:

Windows 10

PowerShell 5.1 для рабочего стола

.Net Framework 4.8

PowerShell Core 6.2.2

dotnet версии 3.0.100

В PowerShell Desktop я получаю следующие проблемы, когда приходится что-либо десериализовать:

Код: Выделить всё

PS dir:\> Import-Module '.\file.dll'
PS dir:\> [namespace.class]::TestMethod($string, $anotherString)  # Test method to return string
{"attribute":"value"}
PS dir:\> [namespace.class]::Method($string, $anotherString)  # Same as above, but uses System.Text.Json to deserialise
Could not load file or assembly 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system
cannot find the file specified.

# System.Buffers.dll is with the System.Text.Json package, but seems to be the wrong version
PS dir:\> (Get-Item .\System.Buffers.dll).VersionInfo.FileVersion
4.6.26515.06
PS dir:\> [System.Reflection.Assembly]::LoadFile("$pwd\System.Buffers.dll").GetName().Version

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      3      0
В PowerShell Core существует такое же исключение для другой сборки/файла.

Код: Выделить всё

PS dir:\> Import-Module '.\file.dll'
PS dir:\> [namespace.class]::Method($string, $anotherString)
"Could not load file or assembly 'System.Text.Encodings.Web, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Could not find or load a specific file. (Exception from HRESULT: 0x80131621)"

#System.Text.Encodings.Web.dll is with the System.Text.Json package and appears to be the required version...
PS dir:\> (Get-Item .\System.Text.Encodings.Web.dll).VersionInfo.FileVersion
4.700.19.56404
[System.Reflection.Assembly]::LoadFile("$pwd\System.Text.Encodings.Web.dll").GetName().Version

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      5      0
У кого-нибудь есть совет, как решить эту проблему, не переключаясь на пакет JSON от Newtonsoft? Возврат с System.Text.Json 4.7.1 на 4.7.0 или 4.6.0 приводит к проблемам с другими сборками, которые являются частью пакета NuGet для System.Text.Json. Прочитал совет здесь, но применить его здесь либо не могу, либо просто не понимаю.

Заранее спасибо. Пожалуйста, дайте мне знать, если вам потребуется дополнительная информация, я ее предоставлю.

РЕДАКТИРОВАТЬ

Я обновил csproj, как предложил Гохан

Код: Выделить всё

true
true

Это сгенерировало следующий код в appName.dll.config
Таким образом, автогенерация всех перенаправлений привязки не работает, как упоминалось выше, есть еще как минимум два, которые не работают. Я бы попробовал создать их вручную, но, насколько мне известно, сейчас нет исходного файла конфигурации, в который можно было бы их поместить. Если у кого-нибудь есть какие-либо указания по этому поводу, я был бы признателен.


Подробнее здесь: https://stackoverflow.com/questions/604 ... -text-json
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»