- PR -

【重障】VS.NET2003でのアプリ開発で、勝手にソースが消える。

投稿者投稿内容
ジーニ
常連さん
会議室デビュー日: 2002/08/27
投稿数: 21
投稿日時: 2003-11-07 11:14
VS.NET2003でWebアプリ開発をしています。
コードビハインドのaspx.csファイルのソースから
何時の間にかイベントが消えてしまう現象が
発生しております。
具体的には、OnInitメソッドから呼ばれている
InitializaComponentメソッド内でイベントを
登録しているコードがたまに一行だけ消えてしまう
という現象です。

画面作成のデザイナでaspxの画面を表示した時に
起こっていると思われるのですが、実際にどのような
条件でイベントが消えるのかは分かっていません。
開発を進めていると、何時の間にか修正した覚えのない
画面からイベントが消えており、ボタンを押しても
何も起こらない、DataGridのページ切り替えやソート
を行っても何も起こらないといった状態になっています。

どなたか解決策を是非教えてください。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-07 12:15
引用:

ジーニさんの書き込み (2003-11-07 11:14) より:

具体的には、OnInitメソッドから呼ばれている
InitializaComponentメソッド内でイベントを
登録しているコードがたまに一行だけ消えてしまう
という現象です。


 InitializeComponentメソッドに書くからです。そこはユーザが手で書き込んではいけません。また、もしそこに何らかのエラーを作り込んでいても、デバッガが止まりませんよ。

 ページを初期化するユーザコードは、Page.Loadイベントハンドラに記述します。

 もしくは、Page.Initイベントハンドラ内のInitializeComponentメソッド呼び出しの後にメソッド呼び出しを記述します。

 region "Web フォーム デザイナで生成されたコード" で折りたたまれた中のコードは、文字通りデザイナが生成するので、ここに書き込んだものが消えたり書き換わったりしても文句を言ってはいけません。
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-11-07 13:34
引用:

 InitializeComponentメソッドに書くからです。そこはユーザが手で書き込んではいけません。



消えてしまうコードがInitializeComponentにあるということだと思います。
そこを手作業で編集しなくても、確かに、そういう現象を体験したことがあります。
まあ、イベントを設定しなおせばいいだけなので、たいした実害は無く放っておきましたが。

経験では、html部分を手編集したりだとか、他のページのDataGridだとかをコピーしてきたりするとなりやすいようです。
ですので、新規ページを作るときは、完全に新規に作るか、またはエクスプローラレベルでファイルをエディタで直して、完全コピー(IDEのデザインコピー機能、エディタは使わない)を行うようにしています。
ジーニ
常連さん
会議室デビュー日: 2002/08/27
投稿数: 21
投稿日時: 2003-11-07 14:04
>Jitta様

申し訳ありません。言葉が足りませんでした。
InitializaComponentには自分では何もコードを書いていません。
質問の意味は、dai様が仰っているようにVisualStudioが自動的に
挿入したコードが何時の間にか消えているという事です。

アプリケーションのバグ修正を行うたびに触った覚えもない画面の
イベントがどんどん消えてしまうため大変困っています。
>html部分を手編集
はかなり頻繁に行っています。(レイヤを多用している関係で、デザイナ
を使うより手でhtmlを修正した方が早い場合が多いです)
これがマズイんでしょうか・・・。
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-11-07 14:17
引用:
触った覚えもない画面のイベントがどんどん消えてしまう



という経験は無いです。
VSSを使用して、修正する画面だけチェックアウトすると、現状よりは安全かと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-07 14:33
引用:

ジーニさんの書き込み (2003-11-07 14:04) より:

InitializaComponentには自分では何もコードを書いていません。
質問の意味は、dai様が仰っているようにVisualStudioが自動的に
挿入したコードが何時の間にか消えているという事です。


 失礼しました。C#ですか?VB.NETでは空のメソッドです(ので、手書きしたのかと)。C#で作るときは気をつけてみていよう。

↓↓C#ではしょっちゅうあるんですね^^;。VB.NETでは、未だ遭遇していませんが。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-07 18:02 ]
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-11-07 14:59
今日は

私も同じような経験をしました。
恐らくVSSが手操作で入力したと判断してしまった為だと思います。
原因は良く分かりませんが、色々な事をやっている内に出ることが有りました。
InitializaComponent内で一度消されたイベントの登録は入れ直しても、VSSが又消してしまいます。
現在の対策は、Oninit内でInitializaComponentを呼んでいますが、その後に消された分を書き直しています。
たけくん
ベテラン
会議室デビュー日: 2003/08/19
投稿数: 63
投稿日時: 2003-11-07 17:17
私もも同じような現象が良く起こりました。
visualstudio.netで2003ではありませんが。

現象が起こる傾向
 ・メモリが少ないとき 
 (仮想メモリが少ないというメッセージやメモリが足りなくデバックできませんという
  メッセージが出たとき)
 ・ビルド中に、フリーズしたとき
 
このようなときに、多くはデータセット系の自動生成ソースが消えてしまいます。

対応としては、最初に自動生成される
Grobal.asax、Webconfigかどれか忘れましたが、ソースが消える前のものと入れ替えて対処しています。

スキルアップ/キャリアアップ(JOB@IT)