none
.netFrameworkのバージョンについて RRS feed

  • 質問

  • VisualStudio2015(VisualBasic)で作成したWindowsFormアプリケーションをサポートが切れているOS(WindowsServer2003R2Standard Sp2または、WindowsXpProSp3)に対して一時的にインストールし、動作確認を行う事を考えています。これらのOSについて.netFramework4.0までインストールできるとわかりました。そもそも動作するのでしょうか?

    • 移動 星 睦美 2015年10月14日 1:11 Windows クライアント開発 から
    2015年10月12日 12:23

回答

  • ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
    http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html

    脱線気味になりますが、誤解を与える記事なので補足します。

    .NET FrameworkのSHA256には3つの実装が用意されています。

    • SHA256CryptoServiceProviderはOSのCrypto Service Providerを使用しますので、OSの影響を受けます。記事の通りであれば動作しない環境もあるということでしょう。
    • SHA256ManagedはC#での実装ですのでパフォーマンスに難がありますが全ての環境で動作します(たぶん)。
    • SHA256CngはOSのCryptography API: Next Generationを使用します。これはVista以降で提供される機能なのでXP、2003では動作しません。

    これらは共通の親クラスSHA256を持ちますので、インスタンス生成部分だけ分岐してやることで、コードを共通化できるよう設計されています。
    付け加えると、各々のクラスのコンストラクターを直接呼び出す必要はなくSHA256.Create()メソッドにクラス名文字列を渡すことでそれぞれのクラスインスタンスを作成できます。つまり文字列を切り替える分岐だけで済みます。
    更に付け加えると、暗号化クラスへのアルゴリズム名の割り当てによりapp.config構成ファイルによって切り替える機能も提供されています。つまりコード上の分岐を排除することもできます。

    ですので、「Windows XP SP3 + .Net Framework 4.0の組み合わせではSHA256が使えない」というタイトルはちょっと盛り過ぎに感じます。
    # 上記機能を理解した上での記事とは思えませんでした…。

    いろいろ書きましたが、SHA256.Create()メソッド(引数無し)で作成されるデフォルトはSHA256Managedでした。デフォルトを使う限り無関係な話題ということでした…。

    • 編集済み 佐祐理 2015年10月14日 2:06
    • 回答としてマーク 星 睦美 2015年10月22日 2:46
    2015年10月14日 1:34
  • ほとんどの場合、基本的には動作するはずですが、既にそれらのOSにおける.NET Framework 4のサポートは終了していますので、動作しない可能性は0ではありません。
    また、本番運用でも.NET Framework 4をお使いの予定でしょうか? .NET Frameworkにもサポート終了日がありますので、もしご存知なければ注意して下さい。ちなみに.NET Framework 4の場合、来年の1月で全てのOSにおけるサポートが終了します。

    (参考)
    各Windows OSでの.NET Frameworkのサポート終了時期を知る
    http://www.atmarkit.co.jp/ait/articles/1503/04/news141.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2015年10月14日 1:13
    • 回答としてマーク 星 睦美 2015年10月22日 2:45
    2015年10月13日 1:22
    モデレータ
  • 以下によれば.NET Framework 4.0での動作は想定されていると考えられます。
    https://msdn.microsoft.com/ja-jp/library/8z6watww(v=vs.100).aspx

    ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
    http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html


    どちらかというと、

    本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。

    前述したサポート切れOSの件よりもこちらのほうが気になりますが。
    .NET4.0で動作したものが.NET4.5.2以上で動作しなくなるケースのほうが多いと思います。
    以下などで互換性の確認もされたほうが良いかもしれません。

    https://msdn.microsoft.com/ja-jp/library/ff602939%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    • 回答の候補に設定 星 睦美 2015年10月14日 1:13
    • 回答としてマーク 星 睦美 2015年10月22日 2:45
    2015年10月13日 15:33
    モデレータ

すべての返信

  • こんにちは。 VB2015で作成したアプリケーションのターゲットフレームワークはいくつなのでしょう。そのバージョンに実行環境が収まっていれば動作はすると思います。 サポート切れのリスクと、動作するしないは別問題かと。
    2015年10月12日 12:47
    モデレータ
  • ほとんどの場合、基本的には動作するはずですが、既にそれらのOSにおける.NET Framework 4のサポートは終了していますので、動作しない可能性は0ではありません。
    また、本番運用でも.NET Framework 4をお使いの予定でしょうか? .NET Frameworkにもサポート終了日がありますので、もしご存知なければ注意して下さい。ちなみに.NET Framework 4の場合、来年の1月で全てのOSにおけるサポートが終了します。

    (参考)
    各Windows OSでの.NET Frameworkのサポート終了時期を知る
    http://www.atmarkit.co.jp/ait/articles/1503/04/news141.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2015年10月14日 1:13
    • 回答としてマーク 星 睦美 2015年10月22日 2:45
    2015年10月13日 1:22
    モデレータ
  • Tak1wa様、trapemiya様
    返信有難うございます。

    >VB2015で作成したアプリケーションのターゲットフレームワークはいくつなのでしょう。

    ターゲットフレームワークは.NET Framework 4です。

    本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。

    今回期間限定かつインターネットに接続しない環境で.NET Framework 4(WindowsServer2003R2Standard Sp2または、WindowsXpProSp3)上でVB2015アプリケーションを動作させる事を考えています。

    2015年10月13日 9:53
  • 以下によれば.NET Framework 4.0での動作は想定されていると考えられます。
    https://msdn.microsoft.com/ja-jp/library/8z6watww(v=vs.100).aspx

    ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
    http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html


    どちらかというと、

    本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。

    前述したサポート切れOSの件よりもこちらのほうが気になりますが。
    .NET4.0で動作したものが.NET4.5.2以上で動作しなくなるケースのほうが多いと思います。
    以下などで互換性の確認もされたほうが良いかもしれません。

    https://msdn.microsoft.com/ja-jp/library/ff602939%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    • 回答の候補に設定 星 睦美 2015年10月14日 1:13
    • 回答としてマーク 星 睦美 2015年10月22日 2:45
    2015年10月13日 15:33
    モデレータ
  • ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
    http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html

    脱線気味になりますが、誤解を与える記事なので補足します。

    .NET FrameworkのSHA256には3つの実装が用意されています。

    • SHA256CryptoServiceProviderはOSのCrypto Service Providerを使用しますので、OSの影響を受けます。記事の通りであれば動作しない環境もあるということでしょう。
    • SHA256ManagedはC#での実装ですのでパフォーマンスに難がありますが全ての環境で動作します(たぶん)。
    • SHA256CngはOSのCryptography API: Next Generationを使用します。これはVista以降で提供される機能なのでXP、2003では動作しません。

    これらは共通の親クラスSHA256を持ちますので、インスタンス生成部分だけ分岐してやることで、コードを共通化できるよう設計されています。
    付け加えると、各々のクラスのコンストラクターを直接呼び出す必要はなくSHA256.Create()メソッドにクラス名文字列を渡すことでそれぞれのクラスインスタンスを作成できます。つまり文字列を切り替える分岐だけで済みます。
    更に付け加えると、暗号化クラスへのアルゴリズム名の割り当てによりapp.config構成ファイルによって切り替える機能も提供されています。つまりコード上の分岐を排除することもできます。

    ですので、「Windows XP SP3 + .Net Framework 4.0の組み合わせではSHA256が使えない」というタイトルはちょっと盛り過ぎに感じます。
    # 上記機能を理解した上での記事とは思えませんでした…。

    いろいろ書きましたが、SHA256.Create()メソッド(引数無し)で作成されるデフォルトはSHA256Managedでした。デフォルトを使う限り無関係な話題ということでした…。

    • 編集済み 佐祐理 2015年10月14日 2:06
    • 回答としてマーク 星 睦美 2015年10月22日 2:46
    2015年10月14日 1:34