Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Class cannot find another class in the same namespace

I have a C# WebApp that we are doing for a client. I have two classes in the project, defined (in separate files) as such...

A general utility library:

namespace Client.WebApp {
    public static class General {
        public static MyDbClass GetDB() {
            //<creates and returns MyDbClass here>
        }
    }
}

A PageBase class:

namespace Client.WebApp {
    public class PageBase : System.Web.UI.Page {
        protected MyDbClass dbo { get; set; }

        public PageBase() {
            dbo = General.GetDB();
        }
    }
}

When I try to compile, I get the error from the dbo = General.GetDB(); line:
The name 'General' does not exist in the current context Client.WebApp.

  • I have double-checked that the namespace is spelled right in both files.
  • I have tried adding the top-level namespace Client.WebApp as a using directive in the pagebase file.
  • I have tried fully qualifying the name as in dbo = Client.WebApp.General.GetDB();

Nothing has helped and it insists that my General class does not exist. Funny thing is that while the build hits this error and stops, the code-editor does not see this error, and the statement does not get red-under-squiggled.

The project is targeting Framework v.4.5.2, and I am working in VS 2015.

like image 340
eidylon Avatar asked Nov 05 '15 19:11

eidylon


2 Answers

I had the same problem: "type or namespace could not be found". It turned out that class was in a file with the "Build Action" property set to "None", meaning the file was not being compiled. I set it to "C# Compiler", that solved it.

like image 36
Ed_75 Avatar answered Oct 17 '22 12:10

Ed_75


It is a strange error, in my VS2015 if I set a file Build Action to anything other than "Compile", I get an error underline on any type for that file.

Anyway the solution here is to verify that the Build Action is set to "Compile", I'm not sure why adding a new file would have set the build action to anything other than "Compile". I've also tested trying to add new files in multiple ways (select a text file template and just name it something.cs), it still sets it as "Compile". You should verify that your VS2015 instance is updated with the latest updates.

like image 171
Ron Beyer Avatar answered Oct 17 '22 14:10

Ron Beyer