2

私はかなり経験豊富なデスクトップ用の .net 開発者ですが、ASP.NET を使用するのはこれが初めてで、すぐに困惑します。

VS2008 の「新しい Web サイト」ウィザードを使用して、単純なページ、分離コード ページなどを作成しました。しかし、すべてのページで使用されるいくつかのユーティリティ メソッドの単純な静的クラスを追加する次のステップは、まったくうまくいきません。

コードをApp_Codeに入れてみました。新しいライブラリプロジェクトを作成して参照しようとしました... Visual Studioでは常にすべてが正常にコンパイルされますが、サーバーにアップロードすると、名前空間/クラスの検索または認識を拒否するだけです.ライブラリ アセンブリ。web.config をいじってみましたが、ライブラリ アセンブリを参照する方法を見つけることができませんでした (たとえば、「*」では参照できないようです)。

サーバーページには次のように記載されています。バージョン情報: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET バージョン:2.0.50727.3074

ユーティリティ メソッドのベスト プラクティスの方法はありますか?また、コード ビハインド ページがそれ自体以外のクラス (またはより良い名前空間、またはアセンブリ) を認識するようにするにはどうすればよいですか?

私が得ている正確なエラーは次のとおりです: CS0246: 型または名前空間名 'MyCommon' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

4

6 に答える 6

5

Webサイトの「プロジェクト」は無視するのが最善です。これらは、プロジェクトではない(.csprojまたは他の同様のファイルがない)という点で、VisualStudioの世界でユニークです。それらは、Webサイト以外の開発者にとっては非常に奇妙で、直感に反しているように見えます。

代わりに、[ファイル]-> [新しいプロジェクトの追加]を使用して、[ASP.NETWebアプリケーション]を選択します。これにより、Webアプリケーションプロジェクトが作成され、期待どおりに機能します。好きなフォルダにクラスを追加することもでき、期待どおりに機能します。

于 2009-06-06T21:02:36.393 に答える
2

名前空間を指すステートメントがあると思いますか?using

時々目にするもの...サーバー上で、(IISで)新しいフォルダーを「アプリケーション」としてマークしましたか?IIS に歯車が必要です。そうでない場合は、App_Code の間違った場所を探していることになります (「アプリケーション」は、ローカル アプリのルートがどこにあるかを示します)。右クリック、プロパティ、「アプリケーションの作成」(またはそのようなもの-手元にサーバーがありません...)

于 2009-06-06T20:53:34.303 に答える
1

クラスがApp_Codeにないときにこのエラーが発生しました...

別の注意点として、Webサイトの代わりにASP.NETアプリケーションから始めることもできます。これらは2つの異なるアプリケーションモデルであり、アプリケーションバリアントは、クラスとアセンブリの追加に関して少し簡単です。

于 2009-06-06T21:04:29.213 に答える
0

ヘルパークラスがWebフォームと同じ名前空間にあることを確認してください。または、呼び出している特定のヘルパーメソッドを完全に修飾してください。あなたがやろうとしていることのいくつかのコードを提供できますか?

于 2009-06-06T20:57:31.690 に答える
0

Webサイトを公開して、プロジェクトをサーバーに移動してください。また、新しいWebサイトの代わりに、 Webアプリケーションプロジェクト(new-> project-> web-> web application project)を使用することもできます。おそらく、期待どおりに動作します。

于 2009-06-06T21:01:44.257 に答える
0

ここで説明しているのと同じように、私たちのチームに多くの問題を引き起こしたので、 Webサイトプロジェクトの使用は避けたいと思います。代わりに、より明確でマルチプロジェクトソリューションにより適したWebアプリケーションプロジェクトモデルを使用する必要があります。

ただし、Webサイトのプロジェクトモデルに固執する必要がある場合は、プロジェクトの参照(MyCommon)をWebアプリに追加してから、使用するクラスにusingステートメントを作成する必要があります。

于 2009-06-06T21:10:35.393 に答える