+ internal static extern IntPtr InternalGetReferencedAssemblies (Assembly module);
+
+ internal static AssemblyName[] GetReferencedAssemblies (Assembly module)
+ {
+ using (var nativeNames = new Mono.SafeGPtrArrayHandle (InternalGetReferencedAssemblies (module))) {
+ var numAssemblies = nativeNames.Length;
+ try {
+ AssemblyName [] result = new AssemblyName[numAssemblies];
+ const bool addVersion = true;
+ const bool addPublicKey = false;
+ const bool defaultToken = true;
+ const bool assemblyRef = true;
+ for (int i = 0; i < numAssemblies; i++) {
+ AssemblyName name = new AssemblyName ();
+ unsafe {
+ Mono.MonoAssemblyName *nativeName = (Mono.MonoAssemblyName*) nativeNames[i];
+ name.FillName (nativeName, null, addVersion, addPublicKey, defaultToken, assemblyRef);
+ result[i] = name;
+ }
+ }
+ return result;
+ } finally {
+ for (int i = 0; i < numAssemblies; i++) {
+ unsafe {
+ Mono.MonoAssemblyName* nativeName = (Mono.MonoAssemblyName*) nativeNames[i];
+ Mono.RuntimeMarshal.FreeAssemblyName (ref *nativeName, true);
+ }
+ }
+ }
+ }
+ }