/// <summary> /// Computes the string representing the strong name of the given assembly reference. /// </summary> public static string StrongName(IAssemblyReference assemblyReference) { StringBuilder sb = new StringBuilder(); sb.Append(assemblyReference.Name.Value); sb.AppendFormat(CultureInfo.InvariantCulture, ", Version={0}.{1}.{2}.{3}", assemblyReference.Version.Major, assemblyReference.Version.Minor, assemblyReference.Version.Build, assemblyReference.Version.Revision); if (assemblyReference.Culture.Length > 0) { sb.AppendFormat(CultureInfo.InvariantCulture, ", Culture={0}", assemblyReference.Culture); } else { sb.Append(", Culture=neutral"); } sb.AppendFormat(CultureInfo.InvariantCulture, ", PublicKeyToken="); if (IteratorHelper.EnumerableIsNotEmpty(assemblyReference.PublicKeyToken)) { foreach (byte b in assemblyReference.PublicKeyToken) { sb.Append(b.ToString("x2")); } } else { sb.Append("null"); } if (assemblyReference.IsRetargetable) { sb.Append(", Retargetable=Yes"); } return(sb.ToString()); }
/// <summary> /// Computes the string representing the strong name of the given assembly reference. /// </summary> public static string StrongName(AssemblyIdentity assemblyIdentity) { Contract.Requires(assemblyIdentity != null); Contract.Ensures(Contract.Result <string>() != null); StringBuilder sb = new StringBuilder(); sb.Append(assemblyIdentity.Name.Value); sb.AppendFormat(CultureInfo.InvariantCulture, ", Version={0}.{1}.{2}.{3}", assemblyIdentity.Version.Major, assemblyIdentity.Version.Minor, assemblyIdentity.Version.Build, assemblyIdentity.Version.Revision); if (assemblyIdentity.Culture.Length > 0) { sb.AppendFormat(CultureInfo.InvariantCulture, ", Culture={0}", assemblyIdentity.Culture); } else { sb.Append(", Culture=neutral"); } sb.AppendFormat(CultureInfo.InvariantCulture, ", PublicKeyToken="); if (IteratorHelper.EnumerableIsNotEmpty(assemblyIdentity.PublicKeyToken)) { foreach (byte b in assemblyIdentity.PublicKeyToken) { sb.Append(b.ToString("x2", CultureInfo.InvariantCulture)); } } else { sb.Append("null"); } return(sb.ToString()); }
/// <summary> /// Appends a formatted string of parameters. Enclosed in square brackets and comma-delimited. /// </summary> protected virtual void AppendPropertyParameters(IEnumerable <IParameterDefinition> parameters, NameFormattingOptions formattingOptions, StringBuilder sb) { if ((formattingOptions & NameFormattingOptions.Signature) == 0) { return; } bool isNotEmpty = IteratorHelper.EnumerableIsNotEmpty(parameters); if (isNotEmpty) { sb.Append('['); } bool first = true; foreach (IParameterTypeInformation param in parameters) { if (first) { first = false; } else { sb.Append(','); } this.AppendParameter(param, formattingOptions, sb); } if (isNotEmpty) { sb.Append(']'); } }
/// <summary> /// Computes the string representing the strong name of the given assembly reference. /// </summary> public static string StrongName(IAssemblyReference assemblyReference) { Contract.Requires(assemblyReference != null); Contract.Ensures(Contract.Result <string>() != null); StringBuilder sb = StringBuilderCache.Acquire(); sb.AppendQuoted(assemblyReference.Name.Value); sb.AppendFormat(CultureInfo.InvariantCulture, ", Version={0}.{1}.{2}.{3}", assemblyReference.Version.Major, assemblyReference.Version.Minor, assemblyReference.Version.Build, assemblyReference.Version.Revision); if (assemblyReference.Culture.Length > 0) { sb.AppendFormat(CultureInfo.InvariantCulture, ", Culture="); sb.AppendQuoted(assemblyReference.Culture); } else { sb.Append(", Culture=neutral"); } sb.AppendFormat(CultureInfo.InvariantCulture, ", PublicKeyToken="); if (IteratorHelper.EnumerableIsNotEmpty(assemblyReference.PublicKeyToken)) { foreach (byte b in assemblyReference.PublicKeyToken) { sb.Append(b.ToString("x2", CultureInfo.InvariantCulture)); } } else { sb.Append("null"); } if (assemblyReference.IsRetargetable) { sb.Append(", Retargetable=Yes"); } if (assemblyReference.ContainsForeignTypes) { sb.Append(", ContentType=WindowsRuntime"); } return(StringBuilderCache.GetStringAndRelease(sb)); }
/// <summary> /// Returns true if the given object is an identifier that identifies the same object as this identifier. /// </summary> //^ [Confined] public sealed override bool Equals(object /*?*/ obj) { if (obj == (object)this) { return(true); } AssemblyIdentity /*?*/ otherAssembly = obj as AssemblyIdentity; if (otherAssembly == null) { return(false); } if (this.Name.UniqueKeyIgnoringCase != otherAssembly.Name.UniqueKeyIgnoringCase) { return(false); } if (this.Version != otherAssembly.Version) { return(false); } if (string.Compare(this.Culture, otherAssembly.Culture, StringComparison.OrdinalIgnoreCase) != 0) { return(false); } if (IteratorHelper.EnumerableIsNotEmpty(this.PublicKeyToken)) { return(IteratorHelper.EnumerablesAreEqual(this.PublicKeyToken, otherAssembly.PublicKeyToken)); } else { if (this.Location.Length == 0 || otherAssembly.Location.Length == 0) { return(true); } return(string.Compare(this.Location, otherAssembly.Location, StringComparison.OrdinalIgnoreCase) == 0); } }
/// <summary> /// Returns true if the given object is an identifier that identifies the same object as this identifier. /// </summary> //^ [Confined] public sealed override bool Equals(object /*?*/ obj) { if (obj == (object)this) { return(true); } AssemblyIdentity /*?*/ otherAssembly = obj as AssemblyIdentity; if (otherAssembly == null) { return(false); } if (this.Name.UniqueKeyIgnoringCase != otherAssembly.Name.UniqueKeyIgnoringCase) { return(false); } if (this.Version != otherAssembly.Version) { return(false); } if (string.Compare(this.Culture, otherAssembly.Culture, StringComparison.OrdinalIgnoreCase) != 0) { return(false); } if (IteratorHelper.EnumerableIsNotEmpty(this.PublicKeyToken)) { return(IteratorHelper.EnumerablesAreEqual(this.PublicKeyToken, otherAssembly.PublicKeyToken)); } else { // This can be dangerous! Returning true here means that weakly named assemblies are assumed to be the // same just because their name is the same. So two assemblies from different locations but the same name // should *NOT* be allowed. return(true); } }