2012-03-29 18 views
10

私のマシンのルートWeb設定(Windows/Microsoft.NET/...のもの)にsystem.web/pages/namespaces/add要素が含まれているかどうかにかかわらず、各aspx.cs CodeBehindファイルの上にusingステートメントを含めることが依然として求められています。どうして?コンパイルして、ページが何であるかを理解できないと不平を言ってはいけませんか?結局のところ、ルートweb.configに<add namespace="System.Web" />が存在します!Web.configのsystem.web/Pages/Namespacesタグのポイントは何ですか?

+0

虚偽の苦情でコンパイルされるか、実際にはコンパイルされませんか? VSは、webconfigに追加されたコントロールの名前空間で常に苦労していますが、ほとんどの場合、すべてがビルドされて正常に実行されます。 –

+0

コンパイルされません。 CodeBehindファイルにサーバーコードが存在するシステムでは、この特定のWeb構成セクションにはまったく価値がありません。 – JonathanWolfson

答えて

9

system.web/pages/namespaces/add要素が.ASPXファイル、コンパイル前に、ソースのない前処理がないので、まだ適切なusingを行う必要があります(.ASPX.CS含む)通常の.CSファイルのためのものです。したがって、.ASPX.CSはすべてusing Namespace宣言を含む有効なCSファイルでなければなりません。

+0

こんにちは、「前処理」についてもっと詳しく説明できますか? .aspxファイルは、 '前処理'中に 'system.web/pages/namespaces'(または[@import]指示文)とどのように対話しましたか?ありがとう。 – pinopino

+0

@pinopino - ご質問がある場合は、新しい質問をしてください(質問を明確にするようお願いしている場合は、実際にオリジナルにリンクしてください)。私はASP.Netとの関係で前処理について何を学びたいのか分からないので、それは何も分かりません。 [wikipedia - Preprocessor](http://en.wikipedia.org/wiki/Preprocessor_%28programming%29)から始めたいと思うかもしれません。 –

7

これは、ステートメントを含める必要がないように、名前空間をaspxファイルとascxファイルに追加します。 documentation on MSDNから

名前空間要素は、アセンブリプリコンパイル時に 使用にインポートディレクティブのコレクションを定義します。この属性は、ASP.NETページの @ Importディレクティブに対応します。 @ Importディレクティブでは、 に、アプリケーションのすべての ページに自動的にインポートされる名前空間を指定できます。

あなたのコードビハインドは、これらのweb.configエントリの影響を受けません。

+0

これは私がVB.NETに関して見つけたものです。 私のマシンではビルドできず、別のマシンでもできます。そこで、私は画面を見て、次のように見ました:これはビルドできます: "Microsoft Visual Basic 2010 01019-532-2002102-70462"。これはできません: "01019-532-2002102-70649"。それが役に立てば幸い。 –

5

他の回答は、このweb.config設定がASPXページにのみ影響し、ASPX.CSなどのコードビハインドページには影響しないことを示しています。 .NET 4.0を対象としたASP.NET Webサイトでこれをテストしたところ、これはC#ページではtrueですが、VBページでは当てはまりませんでした。

web.config設定に名前空間を追加すると、すべてのASPX.VBページの先頭に名前空間が表示されなくなりました。

私はこれがなぜそうであるかについての理論に興味があります。私はASPX.CSとASPX.VBコードの両方のファイルの後ろで動作すると思っていたでしょう。

関連する問題