У меня есть следующий скрипт 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
Почему JsonPatch.Net.dll работает в pwsh в Windows, но не в Linux? ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение