Как использовать 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". Скопируйте этот файл, не исправляйте его.