更新 : 2007 年 11 月
Microsoft Visual Web Developer を使用して、以前のバージョンの Microsoft Visual Studio .NET で作成された Web アプリケーション プロジェクトを開くと、Visual Web Developer は Web アプリケーションを ASP.NET Version 2.0 で使用される形式に自動的に変換します。
![]() |
---|
変換プロセスの詳細については、「Visual Studio .NET からの Web プロジェクト変換」を参照してください。 |
状況により、変換後に Web アプリケーションが異なる動作をすることがあります。このトピックでは、このような状況のうち一般的なものとその解決策について説明します。移行のトラブルシューティングの詳細については、「ASP.NET Development Center for Migration」の移行に関する情報も参照してください。
このトピックでは、変換に関する次の問題について説明します。
変換後にコントロールが別のマークアップを表示する
マークアップの検証でエラーが発生する
変換後にページ イベントが 2 回発生する
コンパイル時にあいまいなクラスが報告される
分離コード ページ モデルの変更に関するエラー
解析エラー
除外されていたファイルが除外されない
プロジェクトの種類が混在している場合にソリューションが一部だけ変換される
Web ベースのサイトをファイル ベースのサイトとして開く
クライアント側の ID が分離コード ファイルから削除される
循環参照エラー
変換後にコントロールが別のマークアップを表示する
ASP.NET 2.0 では、ブラウザが XHTML 機能をサポートしていないと識別されない限り、Page クラスと ASP.NET Web サーバー コントロールは既定で、XHTML 1.0 Transitional 標準と互換性があるマークアップを表示します。変換ウィザードは、xhtmlConformance 要素の mode 属性を自動的に Legacy に設定します。変換後は、要素の表示が以前のバージョンの ASP.NET とは若干異なる場合があります。ほとんどの場合、表示の違いがアプリケーションの機能に影響することはありません。ただし、特定のタグまたは属性に依存するクライアント スクリプトがある場合、アプリケーションが以前のように機能しないことがあります。
詳細については、「ASP.NET と XHTML」を参照してください。
マークアップの検証でエラーが発生する
移行後、既定のマークアップ検証スキームは Internet Explorer 6.0 に設定されます。これは、エディタによるページのマークアップの比較対象が、Microsoft Internet Explorer 6.0 が有効と認識する HTML を定義しているスキームであることを意味します。この手順は、Visual Web Developer への移行を簡単にするために実行されます。マークアップを変更して、アプリケーションが検証に XHTML 1.0 Transitional 検証スキームを使用するようにすることをお勧めします。
検証スキームを変更する方法の詳細については、「方法 : Visual Web Developer で HTML 編集用検証スキームを選択する」を参照してください。
変換後にページ イベントが 2 回発生する
変換プロセスでは、@ Page ディレクティブの AutoEventWireup 属性が削除されます。この属性の既定値は true であり、ページが Page_event という名前のイベントを自動的に発生させることを示します。ページで AutoEventWireup 属性が明示的に false に設定されている場合、変換後にページでイベントが自動的に発生します。Visual Basic の Handles キーワードなど、イベントを発生させる別の明示的な方法がページに含まれている場合、イベントが 2 回発生することがあります。これを回避するには、@ Page ディレクティブに AutoEventWireup="false" を追加します。
コンパイル時にあいまいなクラスが報告される
プロジェクトを変換すると、コンパイラはクラスがあいまいであることを報告できます。つまり、クラスが複数の名前空間からインポートされたことを示します。たとえば、変換されたプロジェクトにより Cache クラスのインスタンスが作成される場合、コンパイラはクラスが System.Net 名前空間と System.Web.Caching 名前空間の両方に存在することを報告します。
このような場合、.NET Framework Version 2.0 には、既存のクラスと同じ名前の新しいクラスが含まれることになります。この問題を修正するには、コード内でクラスへの参照を検索し、名前空間名の先頭にクラス名を追加して、完全に修飾された参照を作成します。
分離コード ページ モデルの変更に関するエラー
分離コード クラスで、クラス プロテクト メンバにアクセスする .aspx ページを持つプロジェクトを変換すると、例外が発生することがあります。これは、.NET Framework 2.0 で分離コード モデルが変更されたことが原因です。.NET Framework の以前のバージョンでは、ページは分離コード クラスの派生クラスでした。しかし、ASP.NET 2.0 では、分離コード クラスは、コンパイルされたページを作成する過程で、.aspx ページと共に使用される部分クラスを定義します。
この変換に関する問題は、基本クラスの共有レイアウト コンポーネントを分離コード クラスとして定義しているアプリケーションで発生することがあります。ユーザー コントロールまたはマスタ ページを使用するか、@ Page ディレクティブの CodeFileBaseClass 属性を使用することによって、同じ共有レイアウトの効果を得ることができます。ユーザー コントロールの開発の詳細については、「ASP.NET ユーザー コントロールの概要」を参照してください。マスタ ページの使用方法の詳細については、「ASP.NET マスター ページの概要」を参照してください。
解析エラー
変換ウィザードは、解析できなかった .aspx ファイルについて解析エラーをレポートします。解析に関する問題は、次のカテゴリに分類されます。
.aspx ページの書式が正しくないまま、変換ウィザードが実行された。
@ Page ディレクティブの CodeBehind 属性または Src 属性が見つからなかった。
.aspx ファイルで参照されている分離コード ファイルが見つからなかった。
.aspx ファイルがプロジェクト ファイル (.csproj や .vbproj など) にリストされているが、プロジェクト ディレクトリにない。ただし、ファイルがプロジェクトの一部でない場合、このエラーは無視できます。
除外されていたファイルが除外されない
以前のバージョンの Visual Studio では、Web プロジェクトにファイルを含めたり Web プロジェクトからファイルを除外するためのオプションがありました。また、プロジェクトのビルド アクションを None に設定することによっても、ファイルをプロジェクト ビルドから除外できました。この 2 つの場合に対する移行ウィザードの処理は異なります。移行ウィザードは、Web プロジェクトに含まれているファイルのうち、除外とマークされていないものを変換します。移行ウィザードは、プロジェクト ビルドの一部でないファイル、つまりビルド アクションが None と設定されているファイルは変換しません。
変換プロセスが完了した後、以前除外されていたファイルを削除したり、.exclude など、Visual Studio で使用されない拡張子を持つファイルの名前を変更したりできます。Web プロジェクト内のプロジェクトのファイルが変換されなかった場合、ビルド アクションが None に設定されていないことを確認してください。
関連するビルド アクションが None に設定されているファイルについては、変換レポートにエラー メッセージが示されます。変換レポートの詳細については、「移行変換レポートの書式」を参照してください。
プロジェクトの種類が混在している場合にソリューションが一部だけ変換される
Microsoft Visual Studio 2005 と以前のバージョンでは、Web プロジェクトと、クラス ライブラリや Windows アプリケーションなどのクライアント プロジェクトとが混在するソリューションを実現できます。Microsoft Visual Studio 2005 の Express Edition を使用している場合、変換できるのは、ソリューションのうち Express Edition に関連がある部分だけです。たとえば、Visual Web Developer 2005 Express Edition で変換ウィザードを使用する場合、開いているソリューションに他にどのようなプロジェクトの種類が含まれていても、変換できるのはソリューションに含まれている Web プロジェクトだけです。変換結果のソリューションは、一部だけ変換されています。プロジェクトの種類が混在するソリューション全体を変換するには、Visual Web Developer 2005、Visual Studio 2005、または Visual Studio 2005 Team System を使用します。
Web ベースのサイトをファイル ベースのサイトとして開く
以前のバージョンの Visual Studio で作成された Web サイトを開くには、Visual Web Developer 2005 の [Web サイトを開く] メニュー項目を使用することをお勧めします。これを使用すると、サイトをファイル ベースのサイト、ローカルの Microsoft Internet Information Services (IIS) サイト、ファイル転送プロトコル (FTP: File Transfer Protocol) 配置サイト、またはリモート サイトとして開くことができます。Web ベースのサイトをファイル ベースのサイトとして開くと、IIS メタデータ情報が失われます。特に、仮想ディレクトリとしてマークされているサブフォルダに関する情報は保持されません。Web ベースのサイトをファイル ベースのサイトに変換すると、変換レポートで警告が通知されます。
[Web サイトを開く] コマンドを使用し、[ローカル IIS] タブを選択して、Web サイトを閉じてからもう一度開くことをお勧めします。移行ウィザードの使用方法の詳細については、「方法 : Visual Studio .NET プロジェクトを Visual Studio 2005 に変換する」を参照してください。変換レポートの詳細については、「移行変換レポートの書式」を参照してください。
クライアント側の ID が分離コード ファイルから削除される
分離コード ページで宣言されているメンバ変数と同じ名前のクライアント側 ID 属性 (HTML の div 要素など) を使用しているマークアップがある場合、マークアップ内の ID タグが変換中に削除されます。
この問題に対処するには、変換前にマークアップとコードをレビューして、クライアント側 ID 属性とメンバ変数とで競合がないかどうかを確認し、あった場合は、異なる名前になるよう変更します。
循環参照エラー
変換プロセスでは、別のページまたはユーザー コントロールを参照する分離コード ページに @ Reference ディレクティブが追加されます。このとき、循環参照が作成される可能性があります。このような場合、compilation 要素の batch 属性を False を設定すると、トラブルシューティングに役立ちます。batch 属性の既定値は、True です。batch を False に設定すると、循環参照が解消されることがあります。長期的な対策としては、App_Code フォルダに格納されているクラスに定義されている抽象基本クラスを使用するようページやユーザー コントロールをデザインし直して、batch 属性を True に戻します。
参照
処理手順
方法 : Visual Web Developer で HTML 編集用検証スキームを選択する