-PR-
  • すぐに回答を!
  • 質問No.7598601
解決
済み

Webサイト アプリのコンパイル他

  • 閲覧数3218
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 20% (1/5)

ASP.NETの初心者です。
職場で急にC#で開発されたWebサイトのメンテを引き継ぐことになり、悪戦苦闘しています。
開発環境は.NET Framework ver.3.5、Visual Studio 2008、サーバーはISSです。

SQL Serverのデータベースにフィールドを追加し、そのデータの表示と更新をWebで行うよう
ソースを変更しましたが、ブラウザーでサイトを開いてテストしたところ、新しく追加した
フィールドへの読み書きがうまくいきません。
Webサイトアプリケーションは実行時に自動コンパイルされるため、事前にビルドする必要は
無いはずですが、もしコンパイルでエラーが発生すると、実行ファイルは作成されず、前回
作成に成功したファイルが使われるのでしょうか?
.aspxファイルで変更したUIは更新されるが、.csファイルで変更した動作に関しては古いビルド
ファイルを実行しているため、変更が反映されないという認識で合っていますか?

Visual Studioでデバッグを実行すると、変更を加えていないファイルで、コードビハインドの
クラスの型がLoadできないという エラーがいくつか検出されます。
あるファイルを変更したために、それを参照もしていない別のファイルでコンパイルエラーが
発生するということもあるのでしょうか?
それとも単に、前任者がバグを残していたということでしょうか。

また、.aspxファイルにフィールドを追加すると、対応する「.aspx.designer.cs」は自動更新される
ものなのでしょうか?
テスト環境からローカルディスクにアプリケーションのすべてのファイルをコピーし、編集しましたが、
ローカルPCではVisual Studio 2008ではなく、2010を使用しています。
このバージョンの違いが、自動更新されない原因なのでしょうか?

知識や経験が乏しいため的外れな質問かもしれませんが、周りにASP.NETやC#の開発に
詳しい人がいないため、本当に困っています。
どなたか上記の疑問点にお答えいただければ幸いです。
よろしくお願いします。
  • 回答数5
  • 気になる数0

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 81% (127/155)

> また、.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アプリケーションというプロジェクトの違いについて考慮して調査されるとよいかと
思います。
補足コメント
NY_717

お礼率 20% (1/5)

早速の回答、感謝致します、

はい、各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を生成できるよう、もう少し頑張ってみます。
ご親切にいろいろアドバイスいただき、本当にありがとうございました。
投稿日時 - 2012-07-19 16:35:05
  • ありがとう数0
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.2
レベル11

ベストアンサー率 81% (127/155)

csprojのダブルクリックでVS2005があがってくる、ということはもともとVS2005で作成されたプロジェクトなんでしょうね。 ソリューションエクスプローラーに何も表示されないというのは、、、フォルダの位置とか関係してたかな? csprojファイルをテキストエディタで開いて調整して、、、とか詳しければできることもあるかもしれませんが。。。 VWD2008からだとメニューの「ファイル」-「開く」-「プ ...続きを読む
csprojのダブルクリックでVS2005があがってくる、ということはもともとVS2005で作成されたプロジェクトなんでしょうね。
ソリューションエクスプローラーに何も表示されないというのは、、、フォルダの位置とか関係してたかな?
csprojファイルをテキストエディタで開いて調整して、、、とか詳しければできることもあるかもしれませんが。。。

VWD2008からだとメニューの「ファイル」-「開く」-「プロジェクト/ソリューション」からcsprojを指定して開けませんかね?
Webサイトプロジェクトではないので、フォルダの指定ではダメなはずです。

> それと、.aspx.designer.csファイルは、コンパイルに成功したタイミングで更新されるの
でしょうか?

これはデザイナー画面でコントロールを触った時点で更新されるはず。
たぶん正しくWebアプリケーションとして開けてないから、かなぁ。
補足コメント
NY_717

お礼率 20% (1/5)

再びコメントいただき、ありがとうございます。

もしかしたら、csprojファイルの設定内容と実際のフォルダ構成やファイルセットが
異なるため、ちゃんとプロジェクトが開けないのかもしれませんね。
Webアプリケーションとしてプロジェクトファイルを開かず、ファイル単位で開いて
編集したりすると、こういうことが起こるのでしょうか。
新しいプロジェクトを作成し、既存のすべてのファイルを追加して、プロジェクト
ファイルを正しく作り直せないか、試してみます。

インストールされているVWD2008では、ファイルメニューに「Webサイトを開く」と
「ファイルを開く」しかなく、ただの「開く」というオプションがないんです。
別のマシンのVWD2010には「プロジェクトを開く」もあるのに、おかしいですよね・・・。
とりあえずすべてのファイルを編集前の状態にロールバックしました。
Webアプリケーションについて、もう少しいろいろ調べて勉強します。
ありがとうございました。
投稿日時 - 2012-07-20 09:04:02
  • ありがとう数0
  • 回答No.3
レベル10

ベストアンサー率 79% (72/91)

横入りでアレですが。。 プログラム内容がどうこう言う前に、そもそもVisual Studioで正しい環境になっていないのではないかと思います。 ■そのプロジェクトはWebサイト? それともWebアプリケーション? *.csprojがあればWebアプリケーション、なければWebサイトです。 Visual Studioの正しい形式で開けていますか? 「アプリケーションを開いた」のか「サイトを開いた」か、 ...続きを読む
横入りでアレですが。。

プログラム内容がどうこう言う前に、そもそも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)上のコードは全てランタイムコンパイルされます。
ソリューションエクスプローラ上で、ファイルのアイコンが正しく見えていますか? 白紙アイコンになってない?


このあたりの基本設定が狂っていると、結果が滅茶苦茶になります。
補足コメント
NY_717

お礼率 20% (1/5)

ASP.NETの知識レベルが私とあまり変わらない同僚がVSでフォルダを指定してプロジェクトを
開いていたので、てっきりWebサイトプロジェクトだと思ったのですが、実は
Webアプリケーションプロジェクトだったようです。

テストサーバーではVS2005でもVWD2008でも「Webアプリケーション」としてプロジェクト
ファイルを開けないのですが、VWD2008で「Webサイトプロジェクト」として開いたり、
ローカルマシンのVWD2010で開いてみた限りでは、すべてちゃんとアイコンが見えています。
ちなみにVWD2010では、プロジェクトを新しいバージョンに変換してからでないと、
「Webサイトプロジェクト」として開けませんでした。
また、バージョン変換中に多くのファイルが変換不可のエラーになりました。
主要な.aspxや.aspx.csファイルは、エラーになりませんでしたが。

理由はよくわかりませんが、なんかいろんな基本設定が狂っているようです・・・

アドバイス、ありがとうございました。
投稿日時 - 2012-07-20 12:25:12
  • ありがとう数0
  • 回答No.4
レベル11

ベストアンサー率 81% (127/155)

> Webアプリケーションとしてプロジェクトファイルを開かず、ファイル単位で開いて > 編集したりすると、こういうことが起こるのでしょうか。 ああ、やってることがわかりました。 これだとaspxファイルとaspx.designer.csの連携はしようがないので、更新されなくて当然です。 > インストールされているVWD2008では、ファイルメニューに「Webサイトを開く」と > ...続きを読む
> 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が入っているマシンが使えるならそこでいけそうな気がしますが。
お礼コメント
NY_717

お礼率 20% (1/5)

だんだん問題点がはっきりしてきました。
まずは開発環境を整え、Webアプリケーションとしてプロジェクトファイルを開いて変更を
加えないと、すべてが正しく連携してくれないということですね。

使用しているのはVWD2008 Express EditionのVer.3.5 SP1です。
教えていただいたリンクの説明で、WebアプリケーションとWebサイトの違いがより深く
理解できました。ありがとうございます。

VWD2010はローカルのPCにしか入っていなくて、そちらにはデータDBとかがないので、
コンパイルやデバッグはテストサーバーでする必要がありますよね。
また、ローカルに全ファイルをコピーして、VWD2010で.csprojファイルを開こうとした
ところ、プロジェクトを新しいバージョンに変換するダイアログが出てきました。
一度変換してしまうと、もうVWD2008では開けなくなるのでしょうか?

アプリの変更の追加要件自体はそんなに複雑なものではないので、簡単に修正できるかと
思いましたが、まさか開発環境でここまで苦労するとは・・・(泣)
いろいろご教授いただき、本当に感謝しております。
投稿日時 - 2012-07-20 12:06:41
  • ありがとう数0
  • 回答No.5
レベル11

ベストアンサー率 81% (127/155)

えと、aspnetさんが記入していることについて、ちょっと補足というか訂正というか。。。 > これ以外にも、最近は「ASP.NET MVCアプリケーション」や「ASP.NET Web Page」もある。 これはWebサイトプロジェクトとWebアプリケーションプロジェクトの話とは別になります。 「ASP.NET MVCアプリケーション」は必ずWebアプリケーションプロジェクトとして構築されます。 ...続きを読む
えと、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が生成されずに動作することはありえませんし。
生成されない、といいきっちゃうと微妙な表現となるので注意が必要だと思います。

まぁ、このあたりはあまり意識しなくてよいところではありますが。
  • ありがとう数0
  • 回答数5
  • 気になる数0
このQ&Aで解決しましたか?

関連するQ&A

-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


-PR-

ピックアップ

-PR-
ページ先頭へ