| File: ManifestUtil\AssemblyReference.cs | Web Access |
| Project: src\msbuild\src\Tasks\Microsoft.Build.Tasks.csproj (Microsoft.Build.Tasks.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.ComponentModel; using System.Globalization; using System.Runtime.InteropServices; using System.Xml.Serialization; #nullable disable namespace Microsoft.Build.Tasks.Deployment.ManifestUtilities { /// <summary> /// Describes the type of an assembly reference. /// </summary> public enum AssemblyReferenceType { /// <summary> /// Assembly type is unspecified and will be determined by the UpdateFileInfo method. /// </summary> Unspecified, /// <summary> /// Specifies a ClickOnce manifest. /// </summary> ClickOnceManifest, /// <summary> /// Specifies a .NET assembly. /// </summary> ManagedAssembly, /// <summary> /// Specifies a Win32 native assembly. /// </summary> NativeAssembly }; /// <summary> /// Describes a manifest assembly reference. /// </summary> [ComVisible(false)] public sealed class AssemblyReference : BaseReference { private AssemblyIdentity _assemblyIdentity = null; private bool _isPrerequisite = false; private AssemblyReferenceType _referenceType = AssemblyReferenceType.Unspecified; private bool _isPrimary = false; /// <summary> /// Initializes a new instance of the AssemblyReference class. /// </summary> public AssemblyReference() { } /// <summary> /// Initializes a new instance of the AssemblyReference class. /// </summary> /// <param name="path">The specified source path of the file.</param> public AssemblyReference(string path) : base(path) { } /// <summary> /// Specifies the identity of the assembly reference. /// </summary> [XmlIgnore] public AssemblyIdentity AssemblyIdentity { get { return _assemblyIdentity; } set { _assemblyIdentity = value; } } /// <summary> /// Specifies whether the assembly reference is a prerequisite. /// </summary> [XmlIgnore] public bool IsPrerequisite { get { return _isPrerequisite; } set { _isPrerequisite = value; } } [XmlIgnore] internal bool IsVirtual { get { if (AssemblyIdentity == null) { return false; } if (String.Equals(AssemblyIdentity.Name, Constants.CLRPlatformAssemblyName, StringComparison.OrdinalIgnoreCase)) { return true; } else { return false; } } } /// <summary> /// Specifies the type of the assembly reference. /// </summary> [XmlIgnore] public AssemblyReferenceType ReferenceType { get { return _referenceType; } set { _referenceType = value; } } /// <summary> /// True if the reference is specified in the project file, false if it is added to the manifest as a result /// of computing the closure of all project references. /// </summary> [XmlIgnore] internal bool IsPrimary { get { return _isPrimary; } set { _isPrimary = value; } } protected internal override string SortName { get { if (_assemblyIdentity == null) { return null; } string name = _assemblyIdentity.ToString(); if (IsVirtual) { name = "1: " + name; // virtual assemblies are first } else if (_isPrerequisite) { name = "2: " + name; // prerequisites are second } else { name = "3: " + name + ", " + TargetPath; // eveything else... } return name; } } public override string ToString() { string str = base.ToString(); if (!String.IsNullOrEmpty(str)) { return str; } if (_assemblyIdentity != null) { return _assemblyIdentity.ToString(); } return String.Empty; } #region " XmlSerializer " [Browsable(false)] [EditorBrowsable(EditorBrowsableState.Never)] [XmlElement("AssemblyIdentity")] public AssemblyIdentity XmlAssemblyIdentity { get { return _assemblyIdentity; } set { _assemblyIdentity = value; } } [Browsable(false)] [EditorBrowsable(EditorBrowsableState.Never)] [XmlAttribute("IsNative")] public string XmlIsNative { get { return _referenceType == AssemblyReferenceType.NativeAssembly ? "true" : "false"; } set { _referenceType = ConvertUtil.ToBoolean(value) ? AssemblyReferenceType.NativeAssembly : AssemblyReferenceType.ManagedAssembly; } } [Browsable(false)] [EditorBrowsable(EditorBrowsableState.Never)] [XmlAttribute("IsPrerequisite")] public string XmlIsPrerequisite { get { return Convert.ToString(_isPrerequisite, CultureInfo.InvariantCulture).ToLower(CultureInfo.InvariantCulture); } set { _isPrerequisite = ConvertUtil.ToBoolean(value); } } #endregion } }