Как использовать System.Text.Json в PowerShell PSCmdlet на Ubuntu - PullRequest
0 голосов
/ 03 ноября 2019

Как использовать System.Text.Json в PSCmdlet Powershell на Ubuntu

Я попытался создать простой PSCmdlet для использования новой библиотеки System.Text.Json. Но я не могу заставить его работать.

У меня есть простая библиотека классов netstandard2.0 под DotNet Core 3.0.100

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Text.Json" Version="4.6.0" />
  </ItemGroup>
</Project>

И мой код:

using System;
using System.Management.Automation;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace pstest
{
    [Cmdlet(VerbsCommon.Get, "test")]
    public class GetJson : PSCmdlet
    {
        protected override void EndProcessing()
        {            
            base.EndProcessing();
            string json = @"{""test"". ""test""}";
            object test = System.Text.Json.JsonSerializer.Deserialize<object>(json, null);
        }
    }
}

После «восстановления dotnet», «сборки dotnet» я запускаю и выполняю свой скрипт powershell (PowerShell 6.2.3) как

bash: Powershell
PS: Import-Module ./bin/Debug/netstandard2.0/pstest.dll
PS: Get-test

Затем получаю:

Get-test : Could not load file or assembly 'System.Text.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
At line:1 char:1
+ Get-test
+ ~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Get-test], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,pstest.GetJson

Любые идеи о том, как решить эту проблему?

PS: я попытался скопировать System.Text.Json в папку bin, а затем он не может найти "System.Text.Encodings.Web". Скопируйте этот файл, не исправляйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...