Visual Studio 2005 で作成された従来の Web プロジェクトがあり、最近 Visual Studio 2010 にアップグレードされました。.net 2.0 に対してビルドされます。
次のようなフラグメントを含むascxユーザーコントロールが含まれています
<select runat="server" id="foo">
<option runat="server" id="bar" value="1">1</option>
</select>
元のデザイナー コードは次のようになります。
protected global::System.Web.UI.WebControls.ListItem bar;
.ascx ファイル内の何かを編集するたびに (改行を追加しても)、デザイナーは自動的に次のように更新されます。
protected global::System.Web.UI.HtmlControls.HtmlGenericControl bar;
その時点で、ページが機能しなくなり、次のランタイム エラーが表示されます。
説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。
パーサー エラー メッセージ: 基本クラスにはフィールド 'bar' が含まれていますが、その型 (System.Web.UI.HtmlControls.HtmlGenericControl) はコントロールの型 (System.Web.UI.WebControls.ListItem) と互換性がありません。
次に、ascx.designer.cs ファイルを手動で編集して、Visual Studio による損傷を修正する必要があります。
すべてのレガシー オプションの選択フラグメントを asp listcontrol オブジェクトに書き換える以外に、ビジュアル スタジオがデザイナー ファイルを食べないようにするにはどうすればよいですか?