How to get the assembly name and class name with full namespace of a given class in the solution?
Solution 1
You could use the Visual Studio Immediate Window as a quick way to obtain the assembly qualified name for one of the solution projects.
IIRC, these steps should work:
- Open the file of a class contained in the project for which you want to obtain assembly name;
- Set that project as the startup project for the solution;
- Open the Immediate Window, default C# environment shortcut is CTRL+D+I;
- In the Immediate Window type
typeof(ClassNameOfStep1).AssemblyQualifiedName
and press Enter.
The Immediate Window depends on Design-Time Expression Evaluation which in turns depends of Visual Studio Hosting Process so you need to have it enabled, which by default already is.
Also, I did some quick tests and the Name of the class was sufficient in all cases except when I tried it on VS 2008, which required me to provide the FullName
of the type. So if Name
results in error use the Name
qualified with the namespace.
Solution 2
These should give you what you're after:
var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName;
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace;
I see you've just added a note to your question regarding "when browsing the classes in the Solution Explorer", the simple answer is that as far as I know, you can't because that's not what Solution Explorer is for (it's there for browsing the files in a solution, not what's contained inside them) and also because:
- One file can contain multiple classes
- All files in one project will, generally, always compile down to a single assembly, making it redundant to display that name for each file.
You may want to see if the "Class View" gives you what you want, but, I suspect it won't.
Solution 3
You can use F# interative, just open the window (View -> Other Windows -> F# Interactive) and try the following:
> typedefof<System.Uri>.Assembly.FullName;;
val it : string =
"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
There are a few assemblies referenced automatically like System. If you need to get the name from another assembly, you'll need to add the reference first (like the service model for example).
> #r "System.ServiceModel.dll";;
--> Referenced 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll'
> typedefof<System.ServiceModel.ICommunicationObject>.Assembly.FullName;;
val it : string =
"System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
F# interative is part of Visual Studio 2010.
Nam G VU
I love to learn and try new stuff; dreaming to create ones someday!
Updated on July 15, 2022Comments
-
Nam G VU almost 2 years
I'm working with WPF and often have the need to get the namespace and assembly name of a given class. But I don't know how to do this.
So, how can we get the names when browsing the classes in the Solution Explorer or/and when editing the class's codes? Please help!
-
Nam G VU almost 14 yearsHi Rob, I'm looking for a no-coding solution. Thank you anyway.
-
Rob almost 14 years@Nam Gi VU, I've added an update to take into account your addition to the question regarding Solution Explorer.
-
Nam G VU almost 14 yearsI see. I've tried in the Class View but no help there. I've updated to add the case: when editing the class's codes.
-
Nam G VU almost 14 yearsCan you explain more about which meta information I should look for?
-
Nam G VU almost 14 yearsI tried, but got error "The type or namespace name 'MyClass' is not valid in this scope"
-
João Angelo almost 14 years@Nam Gi VU, instead of
MyClass
try to useMyNamespace.MyClass
. -
Nam G VU almost 14 years@Angelo: I put in the full namespace of the class but doesn't work either. I got "'CCC' does not exist in the namespace 'A.BB'" when I pass in typeof(A.BB.CCC.DDDD).AssemblyQualifiedName :)
-
Chris Doyle almost 14 years@Nam Gi VU Make sure your application is running
-
João Angelo almost 14 years@Nam Gi Vu, I updated my answer with a missing step (2). Check if that solves the error. It should resolve it, but even if it does this new step kind of removes the simplicity of the solution.
-
Nam G VU almost 14 years@Angelo: I got it now. Thanks to a colleague of mine idea: need to run the solution and while the application is running, proceed your suggestion steps above. Thank you Angelo.
-
Nam G VU almost 14 yearsDon't need to run guys. Just do step 2 (set the start-up project).