Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you allow two DLL's with same namespace.class to exist in the same application?

Specifically, we are trying to upgrade our telerik controls to the latest version. Unfortunately, the old DLL's are so old that many of the control properties have changed vastly so we've decided to upgrade only the telerik control that is giving us problems (the RadEditor control).

So the bin looks something like this:

RadChart.Net2.dll
RadEditor.Net2.dll (we want to get rid on only this one)
RadGrid.Net2.dll
RadInput.Net2.dll
RadPanelbar.Net2.d
RadSpell.NET2.dll
RadTabStrip.Net2.d
RadToolbar.Net2.dl
RadTreeView.Net2.d
RadUpload.Net2.dll
RadWindow.Net2.dll
Telerik.Web.UI.dll (this is the new DLL)

The problem is that all the namespaces and classes are the same from the old DLLs to the new one (Telerik.Web.UI).

Here is the specific error I am getting:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0433: The type 'Telerik.Charting.ChartSeries' exists in both 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\c6516654\63e1c826\assembly\dl3\9aa96a66\00ba04b3_fd85c701\RadChart.Net2.DLL' and 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\c6516654\63e1c826\assembly\dl3\8fdb0e6c\001aa55c_c4f9c901\Telerik.Web.UI.DLL'

I've considered GAC-ing the new DLL but I am uncertain that this will help the situation. Any help would be greatly appreciated.

like image 514
sestocker Avatar asked Jul 23 '09 14:07

sestocker


People also ask

Can two files have same namespace?

Yes, you can split the namespace into multiple blocks (and hence files). Your classes will belong to the same namespace as long as they are declared in the namespace block with the same name.

How do I use two DLLs with the same name?

If your two DLLs have the same name, you are going to have to rename them. Such as Assembly1. dll and Assembly2. dll.

Can a namespace can hold more than one class?

Two classes with the same name can be created inside 2 different namespaces in a single program. Inside a namespace, no two classes can have the same name.

Can assembly have multiple namespaces?

An assembly can contain multiple namespaces, because it can contain multiple logical groupings of objects and methods.


1 Answers

You can use extern aliases (tutorial and reference) to differentiate between them. It's pretty annoying to have to, admittedly - obviously avoid where you can, but at least C# provides a way round it :)

like image 87
Jon Skeet Avatar answered Oct 13 '22 21:10

Jon Skeet