Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }