- ベストアンサー
ASP.NETの初心者がWebサイトアプリのコンパイルに関して悩んでいます
- ASP.NET初心者がC#で開発されたWebサイトのメンテを引き継ぎ、コンパイルに関して悩んでいます。
- SQL Serverのデータベースにフィールドを追加し、Webでの表示と更新を行いたいがうまくいかない問題が発生しています。
- Visual Studioのデバッグ実行時に、ファイルの変更に関連してコンパイルエラーが発生する問題があります。また、.aspxファイルのフィールド追加に関して自動更新されない問題もあります。バージョンの違いが原因かもしれません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> また、.aspxファイルにフィールドを追加すると、対応する「.aspx.designer.cs」は > 自動更新されるものなのでしょうか? えと、ソースコード中に「.aspx.designer.cs」が存在しているのですね? であれば、「Webサイトプロジェクト」ではなく、「Webアプリケーションプロジェクト」として 最初のプロジェクトが構築されています。 この場合、csコード側は一度ビルドしてコンパイルしたdll(binフォルダ内に生成される)を 作ってあげないといけません。 > Visual Studioでデバッグを実行すると、変更を加えていないファイルで、コードビハインドの > クラスの型がLoadできないという エラーがいくつか検出されます。 こっちの原因はちょっとわかりませんね。 プログラム用の環境の作り方に問題があるせいかもしれません。 > テスト環境からローカルディスクにアプリケーションのすべてのファイルをコピーし、編集しましたが、 > ローカルPCではVisual Studio 2008ではなく、2010を使用しています。 > このバージョンの違いが、自動更新されない原因なのでしょうか? 対象とするフレームワークのバージョンがあっていればVSのバージョンの違いは問題ないですが。。。 アプリケーションのすべてのファイルとしては.csprojとか.slnとかも含まれてますかね? 含まれていればslnファイル叩いてVSを起動することで比較的正しい環境ができそうですが。 環境の構築については実際のファイルみないとアドバイスも難しいので、まずはWebサイトと Webアプリケーションというプロジェクトの違いについて考慮して調査されるとよいかと 思います。
その他の回答 (4)
- onos
- ベストアンサー率81% (127/155)
えと、aspnetさんが記入していることについて、ちょっと補足というか訂正というか。。。 > これ以外にも、最近は「ASP.NET MVCアプリケーション」や「ASP.NET Web Page」もある。 これはWebサイトプロジェクトとWebアプリケーションプロジェクトの話とは別になります。 「ASP.NET MVCアプリケーション」は必ずWebアプリケーションプロジェクトとして構築されます。 「ASP.NET Web Page」は必ずWebサイトプロジェクトとして構築されます。 「ASP.NET MVCアプリケーション」「ASP.NET Web Page」と横並びになる概念は 「ASP.NET WebForm」です。 ごっちゃにするとわけがわからなくなりますからきちんと区別してください。 > 「Webサイト」の場合は、「App_Code」の中だけ事前コンパイルされるが、*.dllは生成されない。 いいえ、App_Codeの中もふくめて実行時にコンパイルです。 事前コンパイルはされません。 あと、*.dllはたしかに表面的(binフォルダの中)には生成されませんが、内部の仕組み的には 生成されています。 .NET Frameworkの仕組みとしてdllが生成されずに動作することはありえませんし。 生成されない、といいきっちゃうと微妙な表現となるので注意が必要だと思います。 まぁ、このあたりはあまり意識しなくてよいところではありますが。
- onos
- ベストアンサー率81% (127/155)
> Webアプリケーションとしてプロジェクトファイルを開かず、ファイル単位で開いて > 編集したりすると、こういうことが起こるのでしょうか。 ああ、やってることがわかりました。 これだとaspxファイルとaspx.designer.csの連携はしようがないので、更新されなくて当然です。 > インストールされているVWD2008では、ファイルメニューに「Webサイトを開く」と > 「ファイルを開く」しかなく、ただの「開く」というオプションがないんです。 VWD2008ですか? もしかしてVWD2005じゃないですか? VWD2005のSP1があたっていない状態だとWebサイトしか作れませんでした。 SP1の導入によってWebアプリケーションが作れるようになりました。 このあたりは以下にまとめてますので参考になれば。 http://blogonos.wordpress.com/2008/01/21/web%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%a8web%e3%82%b5%e3%82%a4%e3%83%88%e3%83%97%e3%83%ad%e3%82%b8/ ということで、まずはWebアプリケーションとしてきちんと開ける環境を用意することが重要かと。 VWD2010が入っているマシンが使えるならそこでいけそうな気がしますが。
お礼
だんだん問題点がはっきりしてきました。 まずは開発環境を整え、Webアプリケーションとしてプロジェクトファイルを開いて変更を 加えないと、すべてが正しく連携してくれないということですね。 使用しているのはVWD2008 Express EditionのVer.3.5 SP1です。 教えていただいたリンクの説明で、WebアプリケーションとWebサイトの違いがより深く 理解できました。ありがとうございます。 VWD2010はローカルのPCにしか入っていなくて、そちらにはデータDBとかがないので、 コンパイルやデバッグはテストサーバーでする必要がありますよね。 また、ローカルに全ファイルをコピーして、VWD2010で.csprojファイルを開こうとした ところ、プロジェクトを新しいバージョンに変換するダイアログが出てきました。 一度変換してしまうと、もうVWD2008では開けなくなるのでしょうか? アプリの変更の追加要件自体はそんなに複雑なものではないので、簡単に修正できるかと 思いましたが、まさか開発環境でここまで苦労するとは・・・(泣) いろいろご教授いただき、本当に感謝しております。
- aspnet
- ベストアンサー率79% (72/91)
横入りでアレですが。。 プログラム内容がどうこう言う前に、そもそもVisual Studioで正しい環境になっていないのではないかと思います。 ■そのプロジェクトはWebサイト? それともWebアプリケーション? *.csprojがあればWebアプリケーション、なければWebサイトです。 Visual Studioの正しい形式で開けていますか? 「アプリケーションを開いた」のか「サイトを開いた」か、どっち? *.designers.cs/vbは、Webアプリケーションの場合だけ存在する。 これ以外にも、最近は「ASP.NET MVCアプリケーション」や「ASP.NET Web Page」もある。 ■プロジェクトで全てのファイルが認識されているか? 「Webアプリケーションプロジェクト」では、プロジェクトに属しているファイルが*.dllに事前コンパイルされます。 「Webサイト」の場合は、「App_Code」の中だけ事前コンパイルされるが、*.dllは生成されない。他は全てランタイムコンパイルになります。 マークアップ(ASPX)上のコードは全てランタイムコンパイルされます。 ソリューションエクスプローラ上で、ファイルのアイコンが正しく見えていますか? 白紙アイコンになってない? このあたりの基本設定が狂っていると、結果が滅茶苦茶になります。
補足
ASP.NETの知識レベルが私とあまり変わらない同僚がVSでフォルダを指定してプロジェクトを 開いていたので、てっきりWebサイトプロジェクトだと思ったのですが、実は Webアプリケーションプロジェクトだったようです。 テストサーバーではVS2005でもVWD2008でも「Webアプリケーション」としてプロジェクト ファイルを開けないのですが、VWD2008で「Webサイトプロジェクト」として開いたり、 ローカルマシンのVWD2010で開いてみた限りでは、すべてちゃんとアイコンが見えています。 ちなみにVWD2010では、プロジェクトを新しいバージョンに変換してからでないと、 「Webサイトプロジェクト」として開けませんでした。 また、バージョン変換中に多くのファイルが変換不可のエラーになりました。 主要な.aspxや.aspx.csファイルは、エラーになりませんでしたが。 理由はよくわかりませんが、なんかいろんな基本設定が狂っているようです・・・ アドバイス、ありがとうございました。
- onos
- ベストアンサー率81% (127/155)
csprojのダブルクリックでVS2005があがってくる、ということはもともとVS2005で作成されたプロジェクトなんでしょうね。 ソリューションエクスプローラーに何も表示されないというのは、、、フォルダの位置とか関係してたかな? csprojファイルをテキストエディタで開いて調整して、、、とか詳しければできることもあるかもしれませんが。。。 VWD2008からだとメニューの「ファイル」-「開く」-「プロジェクト/ソリューション」からcsprojを指定して開けませんかね? Webサイトプロジェクトではないので、フォルダの指定ではダメなはずです。 > それと、.aspx.designer.csファイルは、コンパイルに成功したタイミングで更新されるの でしょうか? これはデザイナー画面でコントロールを触った時点で更新されるはず。 たぶん正しくWebアプリケーションとして開けてないから、かなぁ。
補足
再びコメントいただき、ありがとうございます。 もしかしたら、csprojファイルの設定内容と実際のフォルダ構成やファイルセットが 異なるため、ちゃんとプロジェクトが開けないのかもしれませんね。 Webアプリケーションとしてプロジェクトファイルを開かず、ファイル単位で開いて 編集したりすると、こういうことが起こるのでしょうか。 新しいプロジェクトを作成し、既存のすべてのファイルを追加して、プロジェクト ファイルを正しく作り直せないか、試してみます。 インストールされているVWD2008では、ファイルメニューに「Webサイトを開く」と 「ファイルを開く」しかなく、ただの「開く」というオプションがないんです。 別のマシンのVWD2010には「プロジェクトを開く」もあるのに、おかしいですよね・・・。 とりあえずすべてのファイルを編集前の状態にロールバックしました。 Webアプリケーションについて、もう少しいろいろ調べて勉強します。 ありがとうございました。
補足
早速の回答、感謝致します、 はい、各aspxファイルに対応するaspx.designer.csファイルが存在していますし、 フォルダに.csprojファイルも含まれていますので、Webサイトではなく Webアプリケーションというのが正解ですね。 .slnファイルは見当たりませんが、binフォルダ内にdllファイルもありました。 ところがこの.csprojファイル、エクスプローラでダブルクリックするとVisual Studio 2005が立ち上がりますが、ソリューションエクスプローラに何も表示されません。 同じマシンにインストールされているVisual Web Developer 2008 Express Editionでは、 開く対象がWebサイト(フォルダ)かファイルのみで、.csprojファイルを指定できない のですが、Webアプリケーションの場合でもフォルダを指定すればいいのでしょうか? それと、.aspx.designer.csファイルは、コンパイルに成功したタイミングで更新されるの でしょうか? またまた質問ばかりで申し訳ありません。 なんとかコンパイルエラーを無くして新しいdllを生成できるよう、もう少し頑張ってみます。 ご親切にいろいろアドバイスいただき、本当にありがとうございました。