Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GetReferencedAssemblies doesn't return all assemblies

I have the following code inside a Form, and am attempting to find a way to load a project assembly referenced by the form called DataObjects. Using the following code, I only get six assemblies listed. Looking at the references for the project the form is in, there are thirteen assembly references. What is wrong here?

private void ListReferencedAssemblies() {     var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();     foreach (var assembly in assemblies)     {         referencesListBox.Items.Add(assembly.Name);     } }  
like image 741
ProfK Avatar asked Aug 08 '10 10:08

ProfK


2 Answers

Could you please check the assembly's manifest to see what is referenced here?

C# compiler tends to remove referenced assemblies from the manifest if they are not used. Therefore if you don't refer to any type from assembly B or refer only to constants from assembly B (that are inlined by complier) then you will not have this references.

like image 200
Andrey Taptunov Avatar answered Sep 19 '22 11:09

Andrey Taptunov


The compiler will not include assembly references in the output assembly that are not actually used in code.

Only assemblies that are used from code will be referenced in the output assembly.

like image 35
Richard Avatar answered Sep 19 '22 11:09

Richard