web-dev-qa-db-fra.com

Comment corriger l'erreur "Impossible de charger le fichier ou l'assembly 'System.Text.Json, ..."?

  • J'ai créé dans VS Code un nouveau projet classlib.
  • J'ai ajouté deux packages à mon projet: PowerShellStandard.Library + System.Text.Json.

Mon fichier csproj contient ce bloc:

  <ItemGroup>
    <PackageReference Include="PowerShellStandard.Library" Version="5.1.1" />
    <PackageReference Include="System.Text.Json" Version="4.7.0" />
  </ItemGroup>

Mon fichier .cs Utilise System.Text.Json Et System.Management.Automation.

Cela ne me lance aucune erreur/avertissement dans VS Code lorsque j'utilise JsonSerializer.Serialize(...). Il compile également sans erreur ni avertissement lors de l'exécution de dotnet build. Je peux l'importer mais, finalement, lorsque j'exécute le code, je reçois l'erreur suivante:

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

Qu'est-ce que j'oublie ici?

3
Alex_P

J'ai eu ce problème parce que j'avais une dépendance sur Microsoft.Extensions.Configuration.Json dans le projet B qui ciblait netstandard. Microsoft.Extensions.Configuration.Json requiert System.Text.Json lors du démarrage de .NETStandard, mais pas de dotnetcore.

enter image description here

Mon problème est survenu lorsque dans le projet A qui ciblait dotnetcore3.1 référencé le projet B. Au moment de l'exécution, AWS Lambda s'attendait toujours à ce que System.Text.Json soit là.

Pour résoudre le problème, j'ai fini par basculer le projet B vers la cible dotnetcore3.1 également, même s'il s'agit d'une bibliothèque pure et non de quelque chose d'exécutable.

Je ne suis pas sûr que cela réponde directement à votre question car je ne comprends pas parfaitement votre situation, mais une solution possible pour ce scénario. Il a été un peu difficile de trouver de nombreuses autres ressources sur cette question, mais je ne sais probablement pas quoi chercher.

3
Dude0001