LoginSignup
3
3

More than 5 years have passed since last update.

【.NET Framework】supportedRuntime要素のsku属性について

Posted at

はじめに

.NET Frameworkはビルド時のバージョンと実行時のバージョンが異なっても
app.exe.configに以下の追記をすれば動作できるようになっています。

app.exe.config
<startup useLegacyV2RuntimeActivationPolicy="true|false" > 
    <supportedRuntime version="runtime version" sku="sku id"/>  
</startup>

※互換性の問題は当然アプリ側で考慮(検証)が必要です。

versionやskuに設定できる値等は公式ドキュメントをみていただくとして、
v4.0のときのskuの設定値について備忘録のために記載します。

supportedRuntime要素

なぜv4.0なのか

前提として.NET Framework4.5以上はインプレース更新となるため、
4.5以降は同居できないものと想定しています。

.NET Framework のバージョンおよび依存関係

.NET Framework 4.5 はコンピューターの .NET Framework 4 を置き換えるインプレース更新であり、.NET Framework 4.5.1、4.5.2、4.6、4.6.1、4.6.2、4.7、4.7.1、4.7.2 は .NET Framework 4.5 のインプレース更新です。つまり、同じバージョンのランタイム バージョンを使用しますが、アセンブリのバージョンが更新され、新しい型とメンバーが含まれます。

同居ができないのにsku属性はなぜ必要なのかと思ったのがきっかけです。
(結局常に最新をみるのでは?)

結論

versionがv4.0の場合のskuは最低バージョンとなるようです。

例えば、sku=".NETFramework,Version=v4.7.2"と記載すると、
4.6.2までしか入っていないと起動時にメッセージが表示されます。

app.exe.config
<startup useLegacyV2RuntimeActivationPolicy="true" > 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>  
</startup>

自端末には既に4.7.2がインストールされていたので、
適当に4.8とかに記載してみたところ以下のようなメッセージが表示されました。

ちなみに「はい(Y)」を選択するとMSのサイトに飛ばされます。
(4.8だと4.7.2のインストールサイトに飛ばされました)

hoge.exe - This application could not be started.

This application requires one of the following versions of the .NET Framework:
.NETFramework,Version=v4.8

Do you want to install this .NET Framework version now?

はい(Y) いいえ(N)

バージョン指定できるので、
一瞬過去バージョンでも動作できるのかと迷ってしまいましたが、
インプレース更新ということを思い出して納得しました。

3
3
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
3
3