Building a re-usable class library in C# - c#

I have a class library I've built for a coworker to use that, after giving her the .dll file, I cannot get to work. The name of the .dll file is "BatchDashboard." The name of the namespace is "BatchDashboard," and the name of the class (there is only one) is "BatchDashboard." Is it a problem to have all three similarly named? Visual Studio is able to add the reference just fine. However, this statement:
using BatchDashboard;
spits out the following error:
The type or namespace name 'BatchDashboard' could not be found (are you missing a using directive or an assembly reference?
Likewise, I cannot instantiate a new 'BatchDashboard' object.
Could someone tell me what I am doing wrong?
Thx!
EDIT
I have tried adding the reference to another test project on my computer and receive the same results.
SECOND EDIT
Changing the access modifier to public for the "BatchDashboard" class fixed the issue with the using statement. However, when I try to instantiate an object like so:
BatchDashboard batch = new BatchDashboard();
I got the following error:
'BatchDashboard' is a namespace but is used like a 'type'
It was necessary for me to have different class and namespace names to work. Thank you!

I think, I know what problem you have. When you created your class file, you probably didn't change access to your class to "public". In .Net, unless you have public members in the assembly, the namespace wouldn't be found in "using" directive.
Basically, check if the class you have is a "public class"

Here are my best guesses:
You compiled it against the wrong CPU target
You have a dependency on a Runtime library that should be added as a reference to the
project also.

Make sure that:
The library is added as reference to the project
That library is in a equal or prior .NET version compared to your project's .NET version.

Related

The type or namespace name 'ConfigurationManager' does not exist in the 'NamespaceA.NamespaceB' (are you missing an assembly reference?)

For missing namespace, I added a reference to relevant project which contains the namespace.
Code detected the reference and go stable
I then compiled the code.
Again, I am getting the same error and the code became like this
Please help ! I have no clue what is going on. This ConfigurationManager is being used since ages in our solution (which has many projects). I have created a project in the solution and there is where I am getting this error
I tried these, but didn't help
Type or Namespace Error
C# web project complaining about a class
The type or namespace name 'X' does not exist in the namespace 'Y' - in VS generated code
For this issue you have to add ConfigurationManager namespace to your project.
ConfigurationManager is part of System.Configuration in .NET. You should add a reference to your project if you want to use ConfigurationManager after .NET 2.0. As you mentioned you're using .NET 4.0 so you must add a reference to the System.Configuration dll.
Then you should try using System.Configuration.ConfigurationManager.
Update : If you have custom made class so you probably made a mistake while making or using the class.
Read this article may help you.
Hope it helps

Adding a reference + using directive doesn't 'load' the assembly

I added a reference to a different solution assembly to my project.
I also added a using directive
using MyAssembly;
MyAssembly only exposes one type MyClass.
However when I want to reference it in code I still have to write full name:
MyAssembly.MyClass
Isn't the using statement suppose to solve that? The reason is, I'm getting expections that the MyClass type cannot be found.
Seems like you're having same class myClass on both solutions. Hence, you will need to explicitly provide the assembly name in order to let the compiler know which class of both you are referring to.
Its also possible when you reference higher .Net framework version build dll to lower .Net framework Projects. This is very common issue. But agreed that you face the same issue when you have same class defined in two dlls.

The type or namespace name 'X' could not be found

I have a CustomerOrderContext class in CustomerOrder.Data project in my solution. In another project, CustomerOrder.App, I have CustomerVM class. In this class I'm creating a CustomerOrderContext instance. But I get this following error:
Error 2 The type or namespace name 'CustomerOrderContext' could not
be found (are you missing a using directive or an assembly
reference?)
I have changed Build Actions of both projects to Page and then back to None and I have started to get this error. I have this line in CustomerVM:
using CustomerOrder.Data;
so I guess I shouldn't get this error. CustomerOrder.Data is also in References list of CustomerOrder.App. Can you tell me how I can fix this problem?
Thanks.
The issue is solved when I created new project, copied & pasted all classes.
be sure that CurstomerOrderContext class is marked as Public and not Internal.
Can you check if the framework versions are compatible? See https://stackoverflow.com/a/4286625/2478357.
Also, if you use Entity Framework (and CustomerOrder.Data uses EF), check if your CustomerOrder.App has a reference to the Entity framework dll. (This also applies to other imported dll's..)
you need to add Reference of that project (.dll) in your project.
You will find it when you right click your solution and add the (.dll) of other project in debug folder.
To access the class you must have same namespace
and
Check that both projects follow the same .Net Framework

namespace not working in class library c#

I am trying to create a class library using some classes that I created in another project. One of the classes uses images and needs the System.Drawing namespace. However, when I try to copy the code from my project into a new class in my class library, I get an error saying the image object does not exist in the current context, and
The type or namespace name "Drawing" does not exist in the namespace System(are you missing a using directive or an assembly reference?)
It works fine in the other class as part of the other project. Why would this be?
Make sure that System.Drawing is added to the library's assembly references. By default, for class libraries, no Windows Forms assemblies are added.
Yes The problem lies in the References. If you go to your Solution Explorer and expand it, you will see a nested Folder Titled 'References'. Here is where you add the references needed in your project. To add them, simply right click the folder and select add Reference. Once here the reference you need will be in the .Net tab.
In case if a particular .NET reference is not added by default, do that manually:
using System.Drawing;
Write this in top of your class file. then also if u get error right click on reference and add reference of System.Drawing in your project.

Dll reference of one project into another project

I have 2 projects, one built in VB.NET and another in C#.NET. I want to use certain functionality of VB.NET into C#.NET and hence I have added the dll file of VB.NET solution into C#.NET as a reference by browsing the dll from my system.
Say dll name for VB.NET is myData.dll
In my C#.NET project I am trying to declare it as a namespace i.e. "using myData;" and its giving me an error of "Type or namespace name could not be found"
Am I missing something??
A clue about how your VB.NET project is organized. There are some things that can go wrong and you obviously are not aware of them, so lets find out.
According to our information the dll is added as reference.
Say dll name for VB.NET is myData.dll
Ok, so that is the DLL and you reference it.
declare it as a namespace i.e. using myData;
No, you do NOT declare "it as a namespace". You tell the compiler to also look in this namespace for classes. Now, you do NOT tell to compiler whether myData.dll actually contains the namespace myData. This is a totally different thing. You can do without using - if you prefix every class. Nothing in the using statement references a dll.
It could be VB.NET has wrapped another namespace around and it is myData.myData. No joke. It could also be you forgot to make the classes public.
To find out:
Open the DLL using Object Browser ("View", "ObjectBrowser") and look what namespace and classes are in the DLL.
Go and look for the class you want to use and see what it says there. You may be surprised about the classes and / or the namespace.

Categories