PowerShellStandard.Library
_ + _System.Text.Json
_。私のcsproj
ファイルには次のブロックが含まれています:
_ <ItemGroup>
<PackageReference Include="PowerShellStandard.Library" Version="5.1.1" />
<PackageReference Include="System.Text.Json" Version="4.7.0" />
</ItemGroup>
_
私の_.cs
_ファイルは_System.Text.Json
_と_System.Management.Automation
_を使用しています。
JsonSerializer.Serialize(...)
を使用しても、VS Codeでエラーや警告は発生しません。また、running _dotnet build
_の場合、エラーや警告なしでコンパイルされます。インポートすることはできますが、最後にコードを実行すると、次のエラーが表示されます。
_Get-JsonString : Could not load file or Assembly 'System.Text.Json, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
At line:1 char:1
+ Get-JsonString -input s
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-JsonString], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,UrlCSharpPowerShell.CreateJson
_
ここで何が欠けていますか?
NetstandardをターゲットとするプロジェクトBでMicrosoft.Extensions.Configuration.Jsonに依存していたため、この問題が発生しました。 Microsoft.Extensions.Configuration.Jsonは、.NETStandardの起動時にSystem.Text.Jsonを必要としますが、dotnetcoreは必要としません。
私の問題は、dotnetcore3.1をターゲットとするプロジェクトAでプロジェクトBを参照したときに発生しました。実行時に、AWS LambdaはまだSystem.Text.Jsonが存在することを期待していました。
この問題を解決するために、私はプロジェクトBをdotnetcore3.1もターゲットにするよう切り替えましたが、それは純粋なライブラリであり、実行可能ではありません。
私はあなたの状況を完全に理解していないので、これがあなたの質問に直接答えることはわかりませんが、このシナリオの可能な解決策です。この問題について他の多くのリソースを見つけるのは少し困難でしたが、何を調べればよいかわからないだけです。