C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■93072 / 3階層)  .NETのバージョンを取得するには?
□投稿者/ 魔界の仮面弁士 (2489回)-(2019/11/18(Mon) 15:34:24)
No93068 (コリアン さん) に返信
> configファイルを参照するとなると
> テキストファイルとして開いて、

テキストファイルというか、XML ファイルとして読み込んだ方が楽でしょう。
また、 <supportedRuntime> は、優先順位順に複数記録されている可能性があります。
https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/startup/supportedruntime-element?WT.mc_id=DT-MVP-8907


なお、本来配布されるべき .config が無い場合、開発者が想定していた
ターゲットフレームワークとは異なるバージョンで動作する可能性があります。


> configファイルが無くEXEファイルしかない場合にはどのようにすれば良いですか?

アプリが実行される .NET Framework のバージョンは、次の順序で決まります。
https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5?WT.mc_id=DT-MVP-8907

コンパイル時の CLR バージョンについては、System.Reflection.Assembly の
ImageRuntimeVersion で得られますが、これは .NET Framework のバージョンではないことに注意してください。
https://docs.microsoft.com/ja-jp/dotnet/api/system.reflection.assembly.imageruntimeversion?WT.mc_id=DT-MVP-8907&view=netframework-4.8


たとえば、.NET Framework 4.8 がインストールされている開発環境で、
.NET Framework 3.5 をターゲットとしてビルドした上で、
下記の .Config を用意していたとします。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>


この EXE を .NET Framework 4.5 以降がインストールされている環境で実行した場合、たとえば
 Assembly.ImageRuntimeVersion → "v2.0.50727"
 Environment.Version → "4.0.30319.42000"
というバージョン番号を返します。


しかしこの EXE を「.config 無し」で実行した場合、たとえ 4.5 以降がインストールされていたとしても、
2.0〜3.5 が無ければ実行できません。(.NET Framework 3.5 のインストールが要求されることもある)


実行できる環境の場合、ImageRuntimeVersion は .config の有無によらず同じ値を返しますが、
Environment.Version の方は、同じ EXE であっても、実行環境ごとに異なるバージョン番号が
返される可能性があります。たとえばこのように。

Environment.Version → "2.0.50727.8806"
Environment.Version → "2.0.50727.9148"
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: .NETのバージョンを取得するには? /コリアン 返信無し
 
上記関連ツリー

.NETのバージョンを取得するには? / コリアン (19/11/18(Mon) 11:58) #93061
Re[1]: .NETのバージョンを取得するには? / 魔界の仮面弁士 (19/11/18(Mon) 13:28) #93067
Re[1]: .NETのバージョンを取得するには? / みい (19/11/18(Mon) 13:21) #93066
│└ Re[2]: .NETのバージョンを取得するには? / コリアン (19/11/18(Mon) 13:49) #93068
│  ├ Re[3]: .NETのバージョンを取得するには? / kaina (19/11/18(Mon) 14:17) #93070
│  └ .NETのバージョンを取得するには? / 魔界の仮面弁士 (19/11/18(Mon) 15:34) #93072 ←Now
Re[1]: .NETのバージョンを取得するには? / KOZ (19/11/19(Tue) 10:09) #93079
  └ Re[2]: .NETのバージョンを取得するには? / KOZ (19/11/19(Tue) 11:37) #93080
    └ Re[3]: .NETのバージョンを取得するには? / コリアン (19/11/25(Mon) 19:28) #93167
      └ Re[4]: .NETのバージョンを取得するには? / コリアン (19/11/25(Mon) 19:46) #93168 解決済み
        └ Re[5]: .NETのバージョンを取得するには? / コリアン (19/11/25(Mon) 19:55) #93170
          └ Re[6]: .NETのバージョンを取得するには? / コリアン (19/11/25(Mon) 20:08) #93171
            └ Re[7]: .NETのバージョンを取得するには? / KOZ (19/11/26(Tue) 08:52) #93178
              └ Re[8]: .NETのバージョンを取得するには? / コリアン (19/11/27(Wed) 22:34) #93203 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信