前提
MS公式のソースをほぼコピペしただけのコードが動かず、困っています
発生している問題・エラーメッセージ
JsonSerializer.Serialize(weatherForecast);を実行したとき、次のエラー
System.IO.FileNotFoundException: 'ファイルまたはアセンブリ 'System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。'
C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.Json; namespace SerializeBasic { public class WeatherForecast { public DateTimeOffset Date { get; set; } public int TemperatureCelsius { get; set; } public string Summary { get; set; } } public class Program { public static void Main() { var weatherForecast = new WeatherForecast { Date = DateTime.Parse("2019-08-01"), TemperatureCelsius = 25, Summary = "Hot" }; string jsonString = JsonSerializer.Serialize(weatherForecast); Console.WriteLine(jsonString); } } }
試したこと
コンソールアプリ、Windowsフォーム、参照(System.Text.Json)の付け直し、.Netのバージョンを色々変える等試しましたがいずれも動きませんでした。
このコードでこのエラーが出ます?
意味もわからずコピペするのではなく、理解して自分でプログラムするのがプログラマーの役割です。
VisualStudio2022の場合ですが、プロジェクトを新規作成時に、
「Windowsフォームアプリ」を選択し(※Windowsフォームアプリケーション(.NETFramework)ではない)、さらに、フレームワークとして.NET6.0を選んだ場合、ご提示のソースで動くことを確認しました。
>Zuishin
ご指摘賜りありがとうございます。
全くもっておっしゃる通りなのですが、勉強の一貫としてまずコピペを使い、解決できず頭を抱えている初学者でございます。
お恥ずかしながらお付き合い賜われれば幸いでございます。
>kikukiku
ありがとうございます。
当方環境でも.NET Frameworkでなければ動作することが確認できました。
.NET Framework でもこのエラーは出るはずがないので、ここに書かれたところ以外に問題があります。
ファイルが見当たらないと言っています。
ファイルは使っていません。
System.Text.Json 名前空間のシリアライザは .NET Core 3.x 以降/ .NET 5.0, 6.0 用ですが、それを .NET Framework のコンソールアプリで使っているのではないですか?
あなたの開発環境(Visual Studio のバージョン、.NET Framework なのか .NET Core / .NET のどっちかとそのバージョン)を書いてください。
>Zuishin
おっしゃるとおりで、なぜエラー出るかわからず困って質問しました。
>SurferOnWww
>>System.Text.Json 名前空間のシリアライザは .NET Core 3.x 以降/ .NET 5.0, 6.0 用ですが、それを .NET Framework のコンソールアプリで使っているのではないですか?
ご指摘の通りのことをしていました。
使用しているバージョンは次のとおりです
Visual Studio 2019
.NET Framework 4.6.1
Newtonsoft.Jsonだったら動いたので、そちらを使おうかと思いつつあります。
> Newtonsoft.Jsonだったら動いたので、そちらを使おうかと思いつつあります。
そうしてください。.NET Core もバージョン 2.x 以前は Newtonsoft.Json を使っています。
.NET Framework 用の System.Text.Json もあります。
4.6.1以上なら使えますが、依存ファイルがたくさんあります。
Nuget からインストールすれば、その辺解消されるはずですが・・・
回答1件
あなたの回答
tips
プレビュー