質問: visual studio > .net 3.5用 visual studioにてc#でのソフト作成について調べています。 c#は.net frameworks上にて動作するソフトを作成することになる、という認識です。 .net frameworkはosに標準的に用意されているものは、win7とwin8.1で異なるそうですね。 自分で確認したところ - win7: .net framework v3.5.1 - win8: .net framework v4.5 ( 但し、.net framework v3.5も有効にできる?) 質問は q1. v3.5とv.4.5同時対応のソフトは作成できるのでしょうか? (v3.5用がv4.5で動けるでしょうか?) q2. win8にてv4.5とv3.5を両方有効にして、v3.5のソフトをインストールするのは問題あるでしょうか? (他のソフトでv4.5と使っている場合の対応)
回答: もしかするとすでに参照されたかもしれませんが、以下のページが.net frameworkバージョン間および各osバージョンとの関係について、とても参考になります。 http://www.atmarkit.co.jp/ait/articles/1211/16/news093.html 順番が前後しますが、まず q2 について。 上記urlのページ内「.net framework の各バージョン同士の関係」節にも記載がありますが、(2.0~3.5の間を除いて)各frameworkは別物扱いになります。 そのため、windows8に3.5をインストールして、3.5と4.5の共存状態にすることはまったく問題ありません。 「side-by-sideアセンブリ」で検索してもらうとわかりますが、同じクラスなど(アセンブリ)でもバージョン毎に管理する仕組みが存在します。 そして q1 について。 上記のように別物扱いのため、開発の際にターゲットにしたバージョンのframework上で動作させるのが基本になります。 ただし、アプリケーションの構成ファイル(configファイル)内で明示的に指定を行うことで、より新しいバージョンのframework上で実行させることは一応可能です。(3.5向けにビルドしたものを4.5上で動かすなど) 以下のurlのページを参照ください。 http://msdn.microsoft.com/ja-jp/library/vstudio/w4atty68.aspx ただし、同じクラスが各バージョンのframeworkに存在するといっても全くの同一コードというわけではないので、古いバージョン向けのアプリが必ずしも新しいバージョンで動作するとは限りません。 (新しいバージョンでメソッドが追加されたクラスなどは内部構造も変化しているでしょうし、msdnのクラスの説明を見ているとthrowされる例外の種類が増えているメソッドなどもたまに見ます) 上記のurlのページでも触れられていますが、もし別バージョンのframework上で動かすのであれば、各バージョン毎にそれぞれテストは行う必要があると思います。