"Global functions" bug?

R

R Reyes

I have a public class called Database.cs. It has public static functions and
I call them from ProjectA. The code looks something like:
int intConnectionSuccessful = Database.ConnectToDatabase();

Works great.

Now, I have another project, ProjectB on a different server. I copy and add
Database.cs to the project and also call the functions the exact same way as
above. However, I always get this error message:
'The name 'Database' does not exist in the current context'
OR
The type or namespace name 'Database' could not be found (are you missing a
using directive or an assembly reference?)

The file is added to the project and the code is exactly the same except it
works in ProjectA and not in ProjectB. I've compared the files and even the
way they are used in each project to match them up but no matter what I can't
get it to work in ProjectB. I've tried manually retyping everything as well
as copying files for duplication.

I can't seem to replicate the working version even when creating a new
project and starting from scratch. I'm guessing there is either some
configuration setting I missed or the file has to be referenced in a specific
way.

If possible could someone list the exact steps to make this work like I have
it in ProjectA? Or have any ideas why it doesn't work? The only difference
is that one project is made in Visual Web Developer 2008 Express and the
working version is made in Visual Studio 2005

Please help. Thanks in advance.
 
J

Jon Skeet [C# MVP]

R Reyes said:
I have a public class called Database.cs. It has public static functions and
I call them from ProjectA. The code looks something like:
int intConnectionSuccessful = Database.ConnectToDatabase();

Works great.

Now, I have another project, ProjectB on a different server. I copy and add
Database.cs to the project and also call the functions the exact same way as
above. However, I always get this error message:
'The name 'Database' does not exist in the current context'
OR
The type or namespace name 'Database' could not be found (are you missing a
using directive or an assembly reference?)

Right. Database is probably in a namespace like ProjectA, which you
don't have a using directive for - just as the compiler is telling you.
 
R

R Reyes

Hi Jon/Adam,

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

is all that I have...I also thought it was the using directive and possibly
even a "Reference" or "include" directive in the .aspx page but that did not
work either...different error message I think though, not sure. FYI, I do
not use any namespace {} code in both projects and it's also referenced
straight up "Database.somefunction()" or "Constants.somefunction()" with no
other prefix and works fine in ProjectA.

Database.cs is one of the files but the main one I am trying to also include
is called Constants.cs which holds some variables/functions. I use about 3-4
of these exact same classes in all my projects and none of them work in this
one but work in every other project..ProjectC, D, E, F, G for example all
fine except this one doesn't.

Does it matter where the file is placed? ProjectA has them in the App_Code
directory I forgot why I put them there. ProjectB I put it in App_Code as
well as the root just to cover all grounds but still no luck.

Do you think that because the code sounds/looks correct that maybe it has
something to do with IIS, or how the aspnet_client folder was installed? A
configuration setting maybe?

If you like, I could possibly even send over a small set of "compiler" files
just to get a general idea of what my project looks like: default.aspx,
default.aspx.cs, constants.cs/database.cs, web.config, and a .css. My bet is
that it would work on your computers but not on mine because I have something
configured incorrectly on IIS possibly.

I understand it's a holiday weekend so feel free to reply to this thread
whenever you please. Also, this is a personal project so I am in no rush to
solve it but am definitely looking for answers. Gonna play around with it
now again...

I'll keep you posted if I solve it myself. Thanks again for your help,
most appreciated.
 
R

R Reyes

Okay not solving this annoyed me so much today that I just recreated ProjectZ
and it all works fine now. ProjectB was just bad and a "fresh install" was
needed.

Thanks for your time!
 
J

Jon Skeet [C# MVP]

R Reyes said:
is all that I have...I also thought it was the using directive and possibly
even a "Reference" or "include" directive in the .aspx page but that did not
work either...different error message I think though, not sure. FYI, I do
not use any namespace {} code in both projects and it's also referenced
straight up "Database.somefunction()" or "Constants.somefunction()" with no
other prefix and works fine in ProjectA.

You're sure that Constants.cs and Database.cs don't have
namespace { ... } anywhere? Did you manually get rid of that?
Database.cs is one of the files but the main one I am trying to also include
is called Constants.cs which holds some variables/functions. I use about 3-4
of these exact same classes in all my projects and none of them work in this
one but work in every other project..ProjectC, D, E, F, G for example all
fine except this one doesn't.
Does it matter where the file is placed? ProjectA has them in the App_Code
directory I forgot why I put them there. ProjectB I put it in App_Code as
well as the root just to cover all grounds but still no luck.

That does indeed make a difference, but I've had issues with App_Code
before myself. Ask on the ASP.NET group for more info.

However, if you've got several classes which you're reusing, why don't
you put them into a class library? Copying the source code for every
project you create isn't a nice way to reuse them.

When you added the files to the project, did you add them in VS, or
just copy them into the directory? VS will need to know that they're
meant to be part of the project. If you make a change which breaks the
code within Database.cs does it notice and complain?
 
R

R Reyes

Positive. Even after I created ProjectZ and got everything working so that I
could scrap ProjectB...all good and functional with no namespace {...}.

public partial class Page1: System.Web.UI.Page {...} with no namespace {...}
surrounding it.
 
J

Jon Skeet [C# MVP]

Positive. Even after I created ProjectZ and got everything working so that I
could scrap ProjectB...all good and functional with no namespace {...}.

public partial class Page1: System.Web.UI.Page {...} with no namespace {...}
surrounding it.

But what about Constants.cs and Database.cs? That's where the
namespaces would be important.

Have you tried comparing the project files between the "working" and
"broken" projects?

Jon
 
R

R Reyes

Same thing:
Public class Constants {...}
Public class Database {...}

I've tried comparing files and they are in fact an exact match. So,
ProjectB still does not work and I've scrapped it for the most part.

When I copied all of ProjectB's files into ProjectZ (completely new project)
it all works. So again, I was able to work around the issue by recreating
the project completely in a new folder with the "copied" files and still
believe the issue have been caused by an incorrect in IIS, though I haven't
looked into it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top