Open棟梁Project - マイクロソフト系技術情報 Wiki * 目次 [#r90281ba] #contents *概要 [#l6d6a9f4] -本ページでは、.NET Framework ランタイムや開発環境のバージョンアップに伴う.NETプログラムの環境移行、コンバージョン移行の作業範囲を扱います。 -プラットフォーム移行に伴う環境移行については、 [[Windows, IE移行]]、 [[64bit対応]]を参照下さい。 -また、下記の内、コンバージョン移行に該当する移行見積もりに関しては、プログラムの移行性評価作業 として、~ 1・2本のプログラムをサンプリングし、実際に移行 ~ テストした上で、移行作業全体の工数を見積もることをお薦めします。 *.NETの場合 [#w1398912] .NETの場合、 -.NET Frameworkランタイムのバージョンアップは、環境移行 -開発環境のバージョンアップは、コンバージョン移行 に該当します。 -.NET Frameworkは高い後方互換性を維持しており、~ 旧バージョンのVisual Studio(以下、VSと略す)で作成した、.NET Frameworkのアセンブリも、~ 新バージョンの.NET Frameworkで動作させることができます(注0)。 -しかし、新バージョンの.NET Frameworkは、セキュリティおよび機能改善のために、~ 一部、旧バージョンの.NET Frameworkの後方互換を犠牲にしている所があり、~ これを解決するために、複数のバージョンの.NET Frameworkの共存が可能になっています。 --このため、 実行環境中に旧バージョンの.NET Frameworkがインストールされている場合、~ 旧.NET Frameworkバージョンのアセンブリは、旧バージョンの.NET Frameworkで動作します。 --実行環境中に旧バージョンの.NET Frameworkがインストールされていない場合は、~ 高い後方互換性を維持した、新バージョンの.NET Frameworkで動作します)。 -また、.NET Framework2.0~3.5では、~ 一つのアプリケーション ドメイン~ --共通言語ランタイム(CLR)における、実行コードの管理単位。 --従来のWindowsにおけるプロセスに相当する) >に、複数バージョンのランタイムをロードできないので(注1)、~ アプリケーションはどれか1つのバージョンのランタイム上で動かす必要があります。~ このため、例えば、.NET Framework1.1をターゲットとしたクラス ライブラリ(DLL)を~ .NET Framework2.0のWindowsアプリケーション(EXE)から呼び出した場合、~ 当該DLLは、.NET Framework2.0上で動作します。~ このため、この点については環境移行として考えることができます。 ***注 [#v031b7cd] -注0:.NET Framework のバージョンの互換性~ 下位互換とは、プラットフォームの特定のバージョンで開発されたアプリケーションが、~ そのプラットフォームの新しいバージョンでも実行できることを意味します。 --.NET Framework では、下位互換性が最大限に高められています。 --.NET Framework のあるバージョンで記述されたソース コードは、 ---.NET Framework の新しいバージョンでコンパイルでき、 ---.NET Framework のあるバージョンで実行されるバイナリは、~ 新しいバージョンの .NET Framework でも同じように動作します。 --.NET Framework 4.5 は、.NET Framework の Version 1.1、2.0、3.0、3.5、および 4 でビルドされたアプリケーションと下位互換性があります。 >つまり、旧バージョンの .NET Framework でビルドしたアプリケーションとコンポーネントは、.NET Framework 4.5 で動作します。~ ただし、現実的には、この互換性は、.NET Framework のわずかな変更やプログラミング技法の変化によって損なわれている可能性があります。 -注1: .NET Framework 4からは、一つのアプリケーション ドメインに、 --.NET Framework2.0~3.5のいずれかのCLR(CLR2)と、 --.NET Framework 4のCLR(CLR4) の両方をロードできる様になる([[参考1>http://www.atmarkit.co.jp/fdotnet/dnfuture/vs10net4_01/vs10net4_01_01.html]]) >・・・ とのことですが、これは、[[COM]]アドインに限定されるようです([[参考2>http://msdn.microsoft.com/ja-jp/library/vstudio/ee518876.aspx]])。 >異なるランタイム(アプリケーション・ドメイン)でグローバル変数などの共有ができるとは考えにくいので、~ すべてが[[COM]]インターフェイス経由でブリッジされる場合に限定されるようです。 **.NET Framework1.1 → 2.0~3.5 [#t7da3260] ***ランタイムのバージョンアップ [#h066c845] 既に説明しましたが、.NET Frameworkランタイムのバージョンアップは、環境移行に該当します。 -高い後方互換性のため、基本的にVS2003で作成した、.NET Framework1.1をターゲットとしたアセンブリは、.NET Framework2.0~3.5で動作させることができます。 -このため.NET Framework2.0~3.5のみがインストールされている環境でもVS2003で作成したプログラムは動作します。 -しかし、一部後方互換を犠牲にしている所があるため、テストなどは必要になります。 ***開発環境のバージョンアップ [#zd9934fa] .NET Frameworkのバージョンアップに伴い一部犠牲となった後方互換の問題を完全に解決するには、 -VS2003プロジェクトを VS2005、2008に付属の変換ツール で変換して、 -.NET Framework2.0~3.5をターゲットとしたアセンブリとしてビルドする 必要があります。 こちらの作業は、手修正無しのコンバージョン移行に該当し、変換後、必要に応じて - 「後方互換の打ち切り(予告)によるエラー(ワーニング)落とし」(注2) - 「後方互換の打ち切りによるプログラム修正(APIの差替)」 などの修正を施します 。 この変換ツールは、ソリューション / プロジェクト ファイルやconfigファイル、一部のソースコードを変換しますが、 ~ VS2005、2008(.NET Framework2.0~3.5)でサポートされた新機能を使用するようには変換されません。~ このため、例えば、以下の新機能を使用する場合、コードを手修正する必要があります。 -レイアウト記述ファイルの分離~ Windows(Web) フォーム デザイナで生成されたコードは、VS2002、2003は、Windows(Web) フォームの分離コード ファイルと同一のファイル内の、~ Regionプリプロセッサ ディレクティブ:「Windows(Web) フォーム デザイナで生成されたコード」内に記述されるが、~ VS2005以降では、Windows(Web) フォーム デザイナで生成されたコードは、さらに、レイアウト記述ファイル(.Designer.vb(.cs))に分離される。 -.etc~ .NET Framework Version [[2.0>http://msdn.microsoft.com/ja-jp/library/t357fb32.aspx]]、[[3.0>http://msdn.microsoft.com/ja-jp/library/bb822048.aspx]]、[[3.5>http://msdn.microsoft.com/ja-jp/library/bb332048.aspx]]の新機能を参照。 -注2: 後方互換の打ち切り予告の対象クラスには、MSDNクラスライブラリ リファレンス中に~ 「メモ : このクラスは、互換性のために残されています。」という記述が見られる。 ***製品サポート状況の確認 [#kf77cf6e] 3rdパーティ製品が、.NET Frameworkの最新バージョンをサポートしていない場合があるので注意が必要です。 また、.NET Framework ランタイムや開発環境のバージョンアップに伴い、 使用する3rdパーティ製ライブラリの当該環境上でのサポートが無くなる場合、~ 代替ライブラリのI/F変更発生に起因する修正範囲拡大の可能性があります ので、その場合の移行作業は手修正有りのコンバージョン移行に近づきます。 **.NET Framework2.0 → 3.0、3.5 [#c384cd45] -.NET Framework3.0、3.5は2.0上で動作する追加クラス群であるため、~ .NET Framework2.0は、3.0、3.5のランタイム上で動作します。~ -その他、基本的な考え方は、上記の「.NET Framework1.1 → 2.0~3.5」と同じです。 ***.NET Framework1.1、2.0、3.0、3.5 → 4、4.5(4.5.1, 4.5.2) [#c0d9121d] -.NET Frameworkランタイムのバージョンアップになるので、環境移行に該当します。 -従って、基本的な考え方は、上記の「.NET Framework1.1 → 2.0~3.5」と同じです。 ***.NET Framework4 → 4.5( → 4.5.1, → 4.5.2) [#d63c2be5] -.NET Frameworkランタイムのバージョンアップになるので、環境移行に該当します。 --.NET Framework4 と.NET Framework4.5(4.5.1, 4.5.2) は共存できないようですが、~ 高い後方互換を持つため殆ど修正無しで実行可能とのことです。 -従って、基本的な考え方は、上記の「.NET Framework1.1 → 2.0~3.5」と同じです。 *ASP.NETの場合 [#yed2a894] ASP.NETの場合は、ASP.NET1.1からASP.NET2.0への移行になります。~ 上記の「.NET Framework1.1 → 2.0~3.5」より少々複雑になります。 **ランタイムのバージョンアップ [#rd6497e8] プロジェクト ファイルやconfigファイルの変更などが必要になるため、~ 新しい開発環境に付属の変換ツールを使用して変換します(環境移行ではない)。 **開発環境のバージョンアップ [#i223c207] 上記の「.NET Framework1.1 → 2.0~3.5」と同様に、~ VS2003プロジェクトをVS2005、2008に付属の変換ツールで変換して、~ ASP.NET2.0をターゲットとしたWebアプリケーションとして再構成する必要があります。~ こちらの作業は、手修正無しのコンバージョン移行に該当します。 また、特に大きな変更として、ASP.NET2.0では、デフォルトのHTMLレンダリングが、~ HTML4.01(ASP.NET1.1) → XHTML(ASP.NET2.0)と変更されます。~ 上記の変換ツールを使用した場合、configファイルのxhtmlConformanceタグの~ mode属性にLegacyが設定され、HTML4.01でレンダリングされます。 -方法 : ASP.NET Web サイトで XHTML レンダリングを構成する~ http://msdn.microsoft.com/ja-jp/library/ms178159(VS.80).aspx レンダリングをHTML4.01からXHTMLに変更する場合は、 -aspxファイル中に記述されたHTMLや、 -<% Response.Write( string ) %>、 <% = string %> などの 直接出力に問題があれば修正が必要になります~ (Web コントロールを使用していれば、自動的に指定のDTDに対応したHTMLが出力されます)。~ この部分の修正量が多くなるようであれば、移行作業は手修正有りのコンバージョン移行に近づきます。 また同様に、この変換ツールは、ソリューション / プロジェクト ファイルやconfigファイル、一部のソースコードを変換しますが、~ VS2005、2008(ASP.NET2.0)でサポートされた新機能を使用するようには変換されません。~ このため、例えば、以下の新機能を使用する場合、コードを手修正する必要があります。 -ASP.NET 2.0 マスタ ページ~ http://msdn.microsoft.com/ja-jp/library/ms379585(VS.80).aspx --Web サイト全体で一貫した外観を維持するための新しい手法を提供する。~ --マスタ ページを更新するだけで、複数ページに及ぶサイトの外観を簡単に変更できる。 -.etc --ASP.NET 2.0 の新機能~ http://msdn.microsoft.com/ja-jp/library/cc719201.aspx --.NET Framework Version [[2.0>http://msdn.microsoft.com/ja-jp/library/t357fb32.aspx]]、[[3.0>http://msdn.microsoft.com/ja-jp/library/bb822048.aspx]]、[[3.5>http://msdn.microsoft.com/ja-jp/library/bb332048.aspx]]の新機能の内、ASP.NETに関する機能 を参照。 **製品サポート状況の確認 [#wc335b2b] 上記の「.NET Framework1.1 → 2.0~3.5」と同様に、製品サポート状況の確認が必要です。~ また同様に、.NET Framework ランタイムや開発環境のバージョンアップに伴い、~ 使用する3rdパーティ製ライブラリの当該環境上でのサポートが無くなる場合、~ 代替ライブラリのI/O、I/F変更発生に起因する修正範囲拡大の可能性がありますので、~ その場合の移行作業は手修正有りのコンバージョン移行に近づきます。 確認のポイントとしては、 -インターフェイス変更、動作変更が無いか? -上記のweb.configファイルのxhtmlConformanceタグのmode属性に~ Legacyを設定した場合の、HTML4.01でのレンダリングに対応しているか? などが考えられます。 *関連リンク [#fcec8652] **.NET Framework 移行センター [#vecd5b98] -アプリケーションの移行にあたって --移行を始める前に --移行を実行する -移行に必要な技術情報 --.NET Framework 1.0 および 1.1 から .NET Framework 2.0 ~ 3.5 への移行 --.NET Framework 2.0 ~ 3.5 から .NET Framework 4 への移行 **MSDN [#scd84015] ***テクニカルドキュメント > .NET 開発 [#s07a11c9] -.NET 開発(全般) > 技術資料 > 互換性を検証するテスト シナリオ -.NET Framework --.NET Framework (全般) ---.NET Framework の互換性と移行に関する情報 ---.NET Framework 1.0 から 1.1 への変更情報 ---.NET Framework 2.0 へのマイグレーション情報 ---Visual Studio に関する互換性情報 ---Windows Vista に関する互換性情報 ---開発ツール サポート情報 --API を廃止する --.NET Framework 1.1~ 互換性の問題とバージョン間の変更点~ ---バージョン 1.0 から 1.1 にかけて行われた下位非互換の変更点 ---バージョン 1.0 から 1.1 にかけて行われた上位非互換の変更点 ---バージョン 1.0 から バージョン 1.1 にかけて行われた API の変更点 --.NET Framework 2.0 ---デザインタイム変更点 ---ランタイム変更点 ---.NET Framework 2.0 での重大な変更点 ---.NET Framework 2.0 で廃止予定の型とメンバの一覧 (名前空間単位) ---.NET Framework 2.0 で廃止予定の型とメンバの一覧 (アセンブリ単位) ---企業における Microsoft .NET Framework 2.0 のインストールについて --.NET Framework 3.0 --.NET Framework 3.5 --.NET Framework 4~ ---インプロセス サイドバイサイド~ ● インプロセスの side-by-side 実行~ ● CLR 徹底解剖 インプロセス サイドバイサイド ---.NET Framework 4 移行ガイド~ ● .NET Framework 4 への移行に関する問題~ ● 方法: .NET Framework 4 ランタイムを構成する --.NET Framework 4.5 ---.NET Framework 4.5 移行ガイド~ ● .NET Framework 4.5 の新機能~ ● .NET Framework 4.5 のアプリケーションの互換性~ ● .NET Framework 1.1 からの移行~ ● .NET Framework のバージョンの互換性~ ● .NET Framework のバージョンおよび依存関係~ ● .NET Framework の互換性のために残されている機能~ --Web アプリケーション (ASP.NET) > ASP.NET 2.0 ---概要:Microsoft ASP.NET 2.0 に向けての Web アプリケーションの再構築 ---移行:~ ● ASP.NET 1.x から ASP.NET 2.0 への移行~ ● .NET Pet Shop 4: ASP.NET 1.1 アプリケーションを 2.0 に移行する~ ● VS.NET 2002/2003 から VS2005 へのWebプロジェクト変換ステップバイステップ ガイド~ ● Web プロジェクトの一般的な変換問題およびソリューション~ -開発ツールと言語ドキュメント > Visual Studio 2005 Visual Studio > ドキュメント --Visual Web Developer ドキュメント >Web ページ > Web ページ デザイナ > 詳細説明 ---ASP.NET と XHTML~ ● Visual Web Developer での XHTML~ ● 方法 : ASP.NET Web サイトで XHTML レンダリングを構成する **その他 [#n539cb61] -日本ユニシス > .NETソリューション > .NET Frameworkマイグレーション --.NET Framework 1.1/3.5 移行ホワイトペーパー --.NET to .NET マイグレーション ~ 移行計画立案と実践 ~ -ITpro : Windows Vistaにおける.NETアプリケーションの互換性問題 -Windows TIPS:.NET Frameworkのバージョンを整理する - @IT