private static PermissionSet RemoveNonReferencedPermissions(string[] setToFilter, ITaskItem[] dependencies) { PermissionSet retSet = new PermissionSet(PermissionState.None); if (dependencies == null || setToFilter == null || setToFilter.Length == 0) return retSet; List<string> assemblyNameList = new List<string>(); foreach (ITaskItem dependency in dependencies) { AssemblyName dependentAssemblyName = AssemblyName.GetAssemblyName(dependency.ItemSpec); assemblyNameList.Add(dependentAssemblyName.Name + ", " + dependentAssemblyName.Version.ToString()); } SecurityElement retSetElement = retSet.ToXml(); foreach (string permissionXml in setToFilter) { if (!String.IsNullOrEmpty(permissionXml)) { string permissionAssemblyName; string className; string assemblyVersion; SecurityElement permission = SecurityElement.FromString(permissionXml); if (!ParseElementForAssemblyIdentification(permission, out className, out permissionAssemblyName, out assemblyVersion)) continue; if (assemblyNameList.Contains(permissionAssemblyName + ", " + assemblyVersion)) { retSetElement.AddChild(SecurityElement.FromString(permissionXml)); } } } retSet = new ReadOnlyPermissionSet(retSetElement); return retSet; }
/// <summary> /// Converts an XmlElement into a PermissionSet object. /// </summary> /// <param name="element">An XML representation of the permission set.</param> /// <returns>The converted permission set.</returns> public static PermissionSet XmlToPermissionSet(XmlElement element) { if (element == null) return null; SecurityElement se = XmlElementToSecurityElement(element); if (se == null) return null; PermissionSet ps = new PermissionSet(PermissionState.None); try { ps = new ReadOnlyPermissionSet(se); } catch (ArgumentException ex) { //UNDONE: Need to log exception thrown from PermissionSet.FromXml Debug.Fail(String.Format(CultureInfo.CurrentCulture, "PermissionSet.FromXml failed: {0}\r\n\r\n{1}", ex.Message, element.OuterXml)); return null; } return ps; }
public static PermissionSet XmlToPermissionSet(XmlElement element) { if (element == null) { return null; } SecurityElement permissionSetXml = XmlElementToSecurityElement(element); if (permissionSetXml == null) { return null; } PermissionSet set = new PermissionSet(PermissionState.None); try { set = new ReadOnlyPermissionSet(permissionSetXml); } catch (ArgumentException) { return null; } return set; }