web-dev-qa-db-ja.com

「ファイルまたはアセンブリ 'System.Text.Json、...を読み込めませんでした」というエラーを修正するにはどうすればよいですか?

  • VS Codeで新しいclasslibプロジェクトを作成しました。
  • プロジェクトに2つのパッケージを追加しました:_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
_

ここで何が欠けていますか?

3
Alex_P

NetstandardをターゲットとするプロジェクトBでMicrosoft.Extensions.Configuration.Jsonに依存していたため、この問題が発生しました。 Microsoft.Extensions.Configuration.Jsonは、.NETStandardの起動時にSystem.Text.Jsonを必要としますが、dotnetcoreは必要としません。

enter image description here

私の問題は、dotnetcore3.1をターゲットとするプロジェクトAでプロジェクトBを参照したときに発生しました。実行時に、AWS LambdaはまだSystem.Text.Jsonが存在することを期待していました。

この問題を解決するために、私はプロジェクトBをdotnetcore3.1もターゲットにするよう切り替えましたが、それは純粋なライブラリであり、実行可能ではありません。

私はあなたの状況を完全に理解していないので、これがあなたの質問に直接答えることはわかりませんが、このシナリオの可能な解決策です。この問題について他の多くのリソースを見つけるのは少し困難でしたが、何を調べればよいかわからないだけです。

3
Dude0001