Почему JsonPatch.Net.dll работает в pwsh в Windows, но не в Linux?Linux

Ответить
Anonymous
 Почему JsonPatch.Net.dll работает в pwsh в Windows, но не в Linux?

Сообщение Anonymous »

У меня есть следующий скрипт Minimal.ps1:
Add-Type -LiteralPath "$PSScriptRoot/lib/JsonPatch.Net.dll"
$ErrorActionPreference = "Stop"
[System.Text.Json.JsonSerializer]::Deserialize[Json.Patch.JsonPatch]("[]")

В имеющемся у меня каталоге lib извлечено содержимое lib/net8.0/ из пакета JsonPatch.Net 3.2.3 Nuget.
На windows скрипт работает:
$ pwsh ./Minimal.ps1
Operations
----------
{}


Когда я пытаюсь запустить тот же сценарий в Linux в Docker, он терпит неудачу:
$ docker run --rm -it -v .:/test -w /test mcr.microsoft.com/dotnet/sdk:8.0.404 /usr/bin/pwsh ./Minimal.ps1
MethodInvocationException: /test/Minimal.ps1:6
Line |
6 | [System.Text.Json.JsonSerializer]::Deserialize[Json.Patch.JsonPatch]( …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception calling "Deserialize" with "1" argument(s): "Could not resolve type 'Json.Patch.PatchJsonConverter' in assembly 'JsonPatch.Net, Version=3.0.0.0, Culture=neutral,
| PublicKeyToken=17ed63f672b0e278'."

Я пытался создать экземпляр PatchJsonConverter явно, но он вернул ту же ошибку (не удалось определить тип).
Я видел что JsonPatch.Net имел зависимости от Json.More.Net, JsonPointer.Net, Humanizer.Net.
При попытке чтобы также загрузить эти библиотеки DLL в Linux с помощью Add-Type, я получаю подобные ошибки, за исключением Humanizer.Net, который загружается правильно.
Add-Type -Verbose -LiteralPath "$PSScriptRoot/lib/Json.More.dll"
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Could not load file or assembly 'Json.More, Version=2.0.0.0, Culture=neutral, PublicKeyToken=17ed63f672b0e278'.


Подробнее здесь: https://stackoverflow.com/questions/792 ... -not-linux
Ответить

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

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

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

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

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