private static string GetFusionString(Interop.IAssemblyName assemblyName, uint item) { string str = string.Empty; uint pcbProperty = 0; if ((assemblyName.GetProperty(item, IntPtr.Zero, ref pcbProperty) == 0) && (pcbProperty > 0)) { IntPtr zero = IntPtr.Zero; try { zero = Marshal.AllocHGlobal((int) ((pcbProperty + 1) * 2)); if (assemblyName.GetProperty(item, zero, ref pcbProperty) == 0) { str = Marshal.PtrToStringUni(zero); } } finally { if (zero != IntPtr.Zero) { Marshal.FreeHGlobal(zero); } } } return str; }