2012-04-20 14 views
0

私は新しいプロジェクト(C#でWebプロジェクト)を作成しました。 プロジェクトにApp_Codeという名前の新しいフォルダを作成しました。 私は、次のクラスを追加するために進めた:C#Webプロジェクトでクラスについて不満があります

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Shipper.DataLayer; 

namespace Shipper.BusinessLayer 
{ 
    public static class BL 
    { 
     public static int JustSomeTest() 
     { 
      return 1; 
     } 
    } 
} 

そして私の背後にあるコードでは、私のページdefault.aspxのいずれかで実行しようとしました:

int i = BL.JustSomeTest();

が、私は任意のインテリセンスを取得しておりません私はBL.と入力します。それは、私がアセンブリや参照を紛失していると言います。またはThe name BL does not exist in the current contextと表示されます。 しかし、クラスファイルが同じプロジェクトにある場合は参照を含める必要がありますか?私は自分のプロジェクトをビルドしようとしましたが、最初にソリューションファイルの名前がShipper.dllのdllファイルが生成されましたが、このリファレンスを追加するとすぐにThe name BL does not exist in the current contextと表示されます。混乱し、私が使用して文

using Shipper.

しかし、すぐに私のように私の名前空間BusinessLayerが示されていないことを追加しようとしました私のDefault.aspxページで

... イム?

ここ
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Shipper.BusinessLayer; 

namespace Shipper 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       SetDefaults(); 
       int i = BL.JustSomeTest(); 
      } 
     } 
    } 
} 

は私BL.csファイルである:ここで編集

がDefault.aspxのある

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Shipper.DataLayer; 

namespace Shipper.BusinessLayer 
{ 
    public static class BL 
    { 
     public static int JustSomeTest() 
     { 
      return 1; 
     } 
    } 
} 

エラーが読み込みThe type or namespace name BusinessLayer does not exist in the namespace Shipper (are you missing an assembly reference)?

+2

メソッドはクラス外で定義されています。 –

+0

aspxの呼び出しコードで回答を更新できますか? – mgnoonan

+0

@Shedal私は自分の間違いだったので、もう一度質問を編集しました。 – oJM86o

答えて

0

try

Shipper.BusinessLayerを使用する。名前空間を確認し

  1. をしようとする

    物事はあなたがそれがソリューションエクスプローラでターゲットプロジェクトのプロパティを表示していると考えているものです。

  2. Visual Studioでは、オブジェクトブラウザを使用して名前空間を探し、クラスが見えることを確認します。オブジェクトブラウザがそれを見ることができなければ、コードはどちらもできません。
+0

BusinessLayerを参照してください。 – oJM86o

+0

他のプロジェクトの名前空間をVisual Studioのプロジェクトプロパティで確認してください。あなたが思うものと一致することを確認してください。プロジェクトを参照している場合は、オブジェクトブラウザでプロジェクトを参照し、 。 – OmegaMan

5

あなた...

public static int JustSomeTest() 
{ 
    return 1; 
} 

... out of the 'class'です - あなただけでは名前空間の定義されたメソッドを持つことはできません。

(少なくとも、あなたの例から、それだけでタイプミスかもしれないが、あなたは私たちに作業例を与える必要があるだろう)

+0

これは、stackoverflowでそれを入力する間違いでした。私はそれを編集しました。 – oJM86o

+0

これらのリンクを試してください - http://stackoverflow.com/questions/1222281/app-code-classes-not-accessable-asp-net - http: //stackoverflow.com/questions/155105/how-come-classes-in-subfolders-in-my-app-code-folder-are-not-being-found-correct- http://stackoverflow.com/questions/ 520429/organizing-classes-into-namespace-in-the-app-code-folder-not-working-as-ex pected – NSGaga

2

あなたのメソッドは、クラスの外でした。それはノーではありません。代わりにこれを試してみてください:

namespace Shipper.BusinessLayer 
{ 
    public static class BL 
    { 
     public static int JustSomeTest() 
     { 
      return 1; 
     } 
    } 
} 

をまた、あなたは、ポップアップした名前空間は(using Shipper.BusinessLayer)を参照されていることを確認するためにBLを期待している場合。なぜこれは静的なクラスですか?私はあなたが拡張メソッドを作っていない限り、おそらくそれを望んでいないと思う。

+0

ビルドするときに名前空間の名前のタイプBusinessLayerがネームスペースの荷送人に存在しません(アセンブリ参照がありません)? – oJM86o

+0

これは別のアセンブリでこれですか?あなたはそのアセンブリを参照しましたか? –

+0

私の編集ジェレミーを参照してください。このBL.csファイルは、同じプロジェクト、そのすべての1つのソリューションにあります。 BL.csファイルは、App_Codeというフォルダにあります。 – oJM86o

0

は、名前空間宣言を削除してください:

using System; 

public static class BL 
{ 
    public static int JustSomeTest() 
    { 
     return 1; 
    } 
} 
+0

これは役に立ちませんか? – oJM86o

0

荷送人のDLLではなく、Shipperプロジェクトへの参照が追加されていることを確認してください。

次に、Shipperプロジェクトが再構築されていることを確認してください。クリーンでビルドするには最適です。

あなたのインテリセンスをもう一度チェックしてください。私はあなたがShipper dllの楕円形のバージョンを参照していると思われます。

0

クラスを静的にするのではなく、メソッドを静的にしてください。 (私は静的なクラスを使用することはないが、違いはないようです)

もしあなたが真剣に問題を抱えていて、うまく動作しない場合は、Resharperのコピーをインストールしてください。

関連する問題