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?
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.
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.