命名空间中不存在类型或命名空间名称(您是否缺少程序集引用?)

时间:2016-04-01 13:16:47

标签: c# .net-4.5

我知道这个问题已被提出,但我找不到任何有助于解决问题的方法。

我想将aspx页面(Retete.aspx)连接到Microsoft SQL数据库。我在Retete.aspx.cs上收到此错误:

  

错误1命名空间“ProiectSera”中不存在类型或命名空间名称“GlobalClass”(您是否缺少程序集引用?)   错误指向这行代码:

ProiectSera.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);

ProiectSera是项目名称,GlobalClass是我在数据库上进行操作的文件。

我的使用陈述是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProiectSera;

目标框架设为

我该怎么做才能解决这个错误?

更新 我的GlobalClass.cs是:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
using ProiectSera;

using System.Data.Services;

namespace ProiectSera.App_Code
{
    public static class GlobalClass
    {
        static public void Update(string _param1, string _param2)
        {//function to update}
}
}

App_Code是GlobalClass.cs所在的文件夹。我试过了

ProiectSera.App_Code.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text); //

但我有同样的错误。我将GlobalClass.cs放在项目的根目录中。我还从namespace ProiectSera.App_Code

中删除了 .App_Code

UPDATE1 我的Retete.aspx.cs是

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProiectSera;
using ProiectSera.App_Code;

namespace ProiectSera
{
    public partial class Retete : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            string intValRefTempSol;
            string intValRefTempAer;

 //           intValRefTempSol = ValRefTempSol.Text;
 //           intValRefTempAer = ValRefTempAer.Text;


   //         ProiectSera.App_Code.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
            GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
}
}
}

4 个答案:

答案 0 :(得分:1)

您的GlobalClass位于名称空间ProiectSera.App_Code

所以班级名称为ProiectSera.App_Code.GlobalClass

请确保您在ProiectSera命名空间中没有ProiectSera课程,否则如果在{1}}上声明using ProiectSera,则会尝试使用它(作为一般规则,不要将任何类命名为与命名空间相同的名称。

如果仍然无效,您可能想尝试使用global命名空间:

global::ProiectSera.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);

并查看是否有效:如果它没有,并且GlobalClass在同一个项目中,那么您还没有向我们展示其他内容

<强>更新

唯一想到的是,如果你肯定两个文件都在同一个项目/程序集上,那么GlobalClass.cs实际上并没有被编译。确保Build Action设置为Compile(您可以在解决方案资源管理器中右键单击GlobalClass.cs并选择Properties)来查看构建操作。

答案 1 :(得分:1)

如果您使用的是VS.NET:

  1. 右键单击项目的References文件夹。
  2. 选择添加参考。
  3. 选择.NET选项卡(如果它不是.NET Framework程序集,则选择“浏览”按钮)。
  4. 在错误消息中双击包含命名空间的程序集。
  5. 按OK按钮。

答案 2 :(得分:0)

由于您的调用方式,请检查 GlobalClass.cs 中的内容是否声明如下:

namespace ProiectSera
{
    public static class GlobalClass
    { 
        public static void Update(...)
        {
            // ...
        }
    }
}

GlobalClass本身可能不一定是静态的,但方法确实如此,至少如果你想以你正在使用的方式使用它。

(我考虑将此作为评论,但代码格式化使我成为答案)

在问题更加完整后,

更新
您应该使用ProiectSera.App_Code.GlobalClass.Update(...)来调用该方法。

答案 3 :(得分:0)

确保以下内容......

  • 如果它位于单独的库中,那么您的Web应用程序中有一个ProiectSera项目引用。如果GlobalClass本身在Web应用程序项目中,您将不需要这样,但如果GlobalClass在同一解决方案或其他地方的单独库中定义,那么您将需要add a reference到该外部库在您的网络应用程序中。
  • 确保ProiectSera不应该是ProjectSera(如果它是拼写错误)。
  • 确保您在顶部(using ProiectSera;)放置了ProiectSera使用声明。假设这是正确的命名空间。检查GlobalClass类的命名空间,并在希望使用其功能的类中相应地使用它。
  • 然后,只需在代码中调用它,假设Update是GlobalClass的静态方法。

    GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);

编辑:鉴于您现在已发布了GlobalClass代码,您可以看到此类的命名空间为ProiectSera.App_Code;。因此,您需要将其作为另一个类using ProiectSera.App_Code;中的using语句。然后通过简单的GlobalClass.Update调用它,如上所述。

如果你不理解命名空间在C#中是如何工作的,那么我建议你检查一下(https://msdn.microsoft.com/en-us/library/dfb3cx8s.aspx)。