2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「.NET と .NET Framework の違い」だった話

Posted at

はじめに(初心者だった自分の話)

最近、AI に PowerShell スクリプトを書いてもらいました。
見た目はそれっぽいし、コメントも丁寧。

でも実行すると、

  • エラーが出る
  • 「そのメソッドは存在しません」と言われる
  • どこをどう直せばいいのか分からない

正直、

「これ、何を確認すればいいの?」

という状態でした。

結論から言うと、

PowerShell が使っている .NET の種類と、ドキュメントの前提がズレていた

これが原因でした。

この記事は、当時の自分のような 「AI の出した PowerShell スクリプトが動かない初心者」向けに、

  • まずどこを確認すればいいか
  • 「.NET」と「.NET Framework」の何が違うのか

を噛み砕いてまとめたものです。

まず初心者がやるべき「確認ポイント」

AI のコードが動かないとき、
いきなりコードを直そうとしなくて OK です。

最初に確認するのはこの 2 つだけです。

  1. 自分の PowerShell の種類
  2. PowerShell が使っている .NET

この 2 つが分かるだけで、

  • 「コードが悪いのか」
  • 「そもそも環境にそのメソッドが無いのか」

の切り分けがかなり楽になります。

自分が使っている PowerShell を確認する方法

まずは PowerShell 上でこれを実行します。

$PSVersionTable

ここで見るのは PSVersion です。

よくあるパターンは次の 2 つです。

  • 5.1 → Windows PowerShell
  • 7.x → PowerShell 7(クロスプラットフォーム版)

この記事で主に扱うのは Windows PowerShell 5.1 のケースです。

超重要:PowerShell 5.1 は何の上で動いている?

初心者が一番知らない事実がこれです。

Windows PowerShell 5.1 は .NET Framework 上で動いている

つまり、

  • 最新の .NET(.NET 6 / 7 / 8)ではない
  • 昔からある .NET Framework(4.x 系) の上で動いている

ということです。

言い換えると、

PowerShell で .NET のクラスやメソッドを呼ぶ
.NET Framework の機能しか使えない

という前提になります。

ここが分かっていないと、

  • AI が出してきた「最新 .NET 前提のコード」
  • Microsoft Docs の「最新 .NET のサンプル」

をそのまま真似して 「メソッドが無い」「型が無い」地獄にハマります。

AI が出したコードが動かなかった理由

AI はだいたい、

  • 最新の .NET
  • 最新の公式ドキュメント

を前提にコードを生成します。

でも現実の自分の環境はというと、

  • 自分の PowerShell → 5.1
  • 実行基盤 → .NET Framework
  • 参考にしたドキュメント → 最新 .NET

という 前提のズレ が起きていました。

その結果、

  • ドキュメントには載っているメソッド
  • AI が当然のように使っている API

が、自分の環境(.NET Framework)にはそもそも存在しない という状態になっていました。

初心者がやりがちな勘違い

当時の自分はこう思っていました。

  • 「PowerShell = 最新の .NET が使える」
  • 「Microsoft の公式ドキュメント = そのまま使える」
  • 「メソッドが無い = 書き方が間違っている」

全部違いました。

実際は、

「そもそも存在しないメソッド」を呼んでいただけ

というオチでした。

公式ドキュメントの見方(初心者向け)

Microsoft のドキュメントは、
デフォルトで「最新の .NET」が選ばれていることが多いです。

初心者がまずやるべきことはこれだけです。

  1. ページ上部の「Version / Framework 切り替え」を探す
  2. .NET Framework に切り替える
  3. その上でメソッド一覧・サンプルコードを見る

これをしないと、

  • 「ドキュメントにはあるのに使えない」
  • 「IntelliSense に出てこない」
  • 「実行すると MethodNotFound になる」

という状態になります。

「.NET」と「.NET Framework」のざっくり違い(初心者向けイメージ)

細かい話を抜きにして、初心者向けにざっくり言うと:

  • .NET Framework
    • Windows 専用
    • 昔からある
    • Windows PowerShell 5.1 がこれの上で動いている
  • .NET(.NET 5 / 6 / 7 / 8 など)
    • クロスプラットフォーム(Windows / Linux / macOS)
    • 新しい世界
    • PowerShell 7 はこちらを使う

なので、

  • Windows PowerShell 5.1 でコードを書く
    • .NET Framework の世界
  • PowerShell 7 でコードを書く
    • 最新 .NET の世界

という前提でドキュメントやサンプルを見分ける必要があります。

AI が出した PowerShell スクリプトの確認手順

実際に AI のコードを受け取ったときに、
今なら自分は次の順番で確認します。

1. PowerShell のバージョン確認

$PSVersionTable.PSVersion

ここで 5.1 が返ってきたら、
「これは .NET Framework 前提の世界だな」 と認識します。

2. 5.1 だったらこう考える

  • 実行基盤は .NET Framework
  • 最新 .NET の記事・サンプルはそのまま信じない

特に、

  • .NET 6
  • .NET 7
  • .NET 8

と書いてある記事は、
「自分の環境では使えない API を使っているかもしれない」 と疑います。

3. .NET Frameworkのドキュメント確認方法

  1. Microsoft Docs を開く
  2. バージョンを .NET Framework に切り替える
  3. そのメソッドが 実際に .NET Framework の一覧にあるか確認する

という手順で確認します。

なければ、

「これは .NET Framework には存在しないメソッドだな」

と判断できるので、

  • 代替メソッドを探す
  • 実装を自前で書く
  • そもそも PowerShell 7 への移行を検討する

といった判断がしやすくなります。

まとめ(初心者向け)

  • PowerShell 5.1 は .NET Framework 上で動いている
  • AI のコードは「最新 .NET」前提なことが多い
  • 動かないときは コードそのものより「前提条件」を疑う
  • 公式ドキュメントは 必ずバージョン/フレームワークの切り替えを確認する

「メソッドがない」「型がない」と怒られても、

「自分の環境(.NET Framework)にそのメソッドは存在するのか?」

を最初に確認するだけで、だいぶ楽になります。

おわりに

「AI が出したコードをどう確認すればいいのか分からない」
これは初心者なら普通のことだと思います。

でも、

  • 自分の PowerShell の種類
  • その PowerShell が使っている .NET(.NET Framework なのか、最新 .NET なのか)

この 2 つを知るだけで、

「何を確認すればいいか」

が見えるようになります。

同じところで詰まる人の、少しでも助けになれば嬉しいです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?