- - PR -
【重障】VS.NET2003でのアプリ開発で、勝手にソースが消える。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-07 11:14
VS.NET2003でWebアプリ開発をしています。
コードビハインドのaspx.csファイルのソースから 何時の間にかイベントが消えてしまう現象が 発生しております。 具体的には、OnInitメソッドから呼ばれている InitializaComponentメソッド内でイベントを 登録しているコードがたまに一行だけ消えてしまう という現象です。 画面作成のデザイナでaspxの画面を表示した時に 起こっていると思われるのですが、実際にどのような 条件でイベントが消えるのかは分かっていません。 開発を進めていると、何時の間にか修正した覚えのない 画面からイベントが消えており、ボタンを押しても 何も起こらない、DataGridのページ切り替えやソート を行っても何も起こらないといった状態になっています。 どなたか解決策を是非教えてください。 | ||||
|
投稿日時: 2003-11-07 12:15
InitializeComponentメソッドに書くからです。そこはユーザが手で書き込んではいけません。また、もしそこに何らかのエラーを作り込んでいても、デバッガが止まりませんよ。 ページを初期化するユーザコードは、Page.Loadイベントハンドラに記述します。 もしくは、Page.Initイベントハンドラ内のInitializeComponentメソッド呼び出しの後にメソッド呼び出しを記述します。 region "Web フォーム デザイナで生成されたコード" で折りたたまれた中のコードは、文字通りデザイナが生成するので、ここに書き込んだものが消えたり書き換わったりしても文句を言ってはいけません。 | ||||
|
投稿日時: 2003-11-07 13:34
消えてしまうコードがInitializeComponentにあるということだと思います。 そこを手作業で編集しなくても、確かに、そういう現象を体験したことがあります。 まあ、イベントを設定しなおせばいいだけなので、たいした実害は無く放っておきましたが。 経験では、html部分を手編集したりだとか、他のページのDataGridだとかをコピーしてきたりするとなりやすいようです。 ですので、新規ページを作るときは、完全に新規に作るか、またはエクスプローラレベルでファイルをエディタで直して、完全コピー(IDEのデザインコピー機能、エディタは使わない)を行うようにしています。 | ||||
|
投稿日時: 2003-11-07 14:04
>Jitta様
申し訳ありません。言葉が足りませんでした。 InitializaComponentには自分では何もコードを書いていません。 質問の意味は、dai様が仰っているようにVisualStudioが自動的に 挿入したコードが何時の間にか消えているという事です。 アプリケーションのバグ修正を行うたびに触った覚えもない画面の イベントがどんどん消えてしまうため大変困っています。 >html部分を手編集 はかなり頻繁に行っています。(レイヤを多用している関係で、デザイナ を使うより手でhtmlを修正した方が早い場合が多いです) これがマズイんでしょうか・・・。 | ||||
|
投稿日時: 2003-11-07 14:17
という経験は無いです。 VSSを使用して、修正する画面だけチェックアウトすると、現状よりは安全かと思います。 | ||||
|
投稿日時: 2003-11-07 14:33
失礼しました。C#ですか?VB.NETでは空のメソッドです(ので、手書きしたのかと)。C#で作るときは気をつけてみていよう。 ↓↓C#ではしょっちゅうあるんですね^^;。VB.NETでは、未だ遭遇していませんが。 [ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-07 18:02 ] | ||||
|
投稿日時: 2003-11-07 14:59
今日は
私も同じような経験をしました。 恐らくVSSが手操作で入力したと判断してしまった為だと思います。 原因は良く分かりませんが、色々な事をやっている内に出ることが有りました。 InitializaComponent内で一度消されたイベントの登録は入れ直しても、VSSが又消してしまいます。 現在の対策は、Oninit内でInitializaComponentを呼んでいますが、その後に消された分を書き直しています。 | ||||
|
投稿日時: 2003-11-07 17:17
私もも同じような現象が良く起こりました。
visualstudio.netで2003ではありませんが。 現象が起こる傾向 ・メモリが少ないとき (仮想メモリが少ないというメッセージやメモリが足りなくデバックできませんという メッセージが出たとき) ・ビルド中に、フリーズしたとき このようなときに、多くはデータセット系の自動生成ソースが消えてしまいます。 対応としては、最初に自動生成される Grobal.asax、Webconfigかどれか忘れましたが、ソースが消える前のものと入れ替えて対処しています。 |