public UnifiedAssemblyName(AssemblyNameExtension preUnified, AssemblyNameExtension postUnified, bool isUnified, UnificationReason unificationReason, bool isPrerequisite, bool?isRedistRoot, string redistName) { PreUnified = preUnified; PostUnified = postUnified; IsUnified = isUnified; IsPrerequisite = isPrerequisite; IsRedistRoot = isRedistRoot; RedistName = redistName; UnificationReason = unificationReason; }
public UnifiedAssemblyName(AssemblyNameExtension preUnified, AssemblyNameExtension postUnified, bool isUnified, UnificationReason unificationReason, bool isPrerequisite, bool? isRedistRoot, string redistName) { _preUnified = preUnified; _postUnified = postUnified; _isUnified = isUnified; _isPrerequisite = isPrerequisite; _isRedistRoot = isRedistRoot; _redistName = redistName; _unificationReason = unificationReason; }
/// <summary> /// Get unification information for the given assembly name. /// </summary> /// <param name="assemblyName">The assembly name.</param> /// <param name="unifiedVersion">The new version of the assembly to use.</param> /// <param name="unificationReason">The reason this reference was unified.</param> /// <param name="isPrerequisite">True if this is a prereq assembly.</param> /// <returns>True if there was a unification.</returns> private bool UnifyAssemblyNameVersions ( AssemblyNameExtension assemblyName, out Version unifiedVersion, out UnificationReason unificationReason, out bool isPrerequisite, out bool? isRedistRoot, out string redistName ) { unifiedVersion = assemblyName.Version; isPrerequisite = false; isRedistRoot = null; redistName = null; unificationReason = UnificationReason.DidntUnify; // If there's no version, for example in a simple name, then no remapping is possible. if (assemblyName.Version == null) { return false; } // Try for a remapped assemblies unification. if (_remappedAssemblies != null) { foreach (DependentAssembly remappedAssembly in _remappedAssemblies) { // First, exclude anything without the simple name match AssemblyNameExtension comparisonAssembly = new AssemblyNameExtension((AssemblyName)remappedAssembly.PartialAssemblyName.Clone()); if (assemblyName.CompareBaseNameTo(comparisonAssembly) == 0) { // Comparison assembly is a partial name. Give it our version. comparisonAssembly.ReplaceVersion(assemblyName.Version); if (assemblyName.Equals(comparisonAssembly)) { foreach (BindingRedirect bindingRedirect in remappedAssembly.BindingRedirects) { if (assemblyName.Version >= bindingRedirect.OldVersionLow && assemblyName.Version <= bindingRedirect.OldVersionHigh) { // If the new version is different than the old version, then there is a unification. if (assemblyName.Version != bindingRedirect.NewVersion) { unifiedVersion = bindingRedirect.NewVersion; unificationReason = UnificationReason.BecauseOfBindingRedirect; return true; } } } } } } } // Try for an installed assemblies unification. if (_installedAssemblies != null) { _installedAssemblies.GetInfo ( assemblyName, out unifiedVersion, out isPrerequisite, out isRedistRoot, out redistName ); // Was there a unification? if (unifiedVersion != assemblyName.Version) { unificationReason = UnificationReason.FrameworkRetarget; return assemblyName.Version != unifiedVersion; } } return false; }
internal void AddPreUnificationVersion(String referencePath, Version version, UnificationReason reason) { string key = referencePath + version.ToString() + reason.ToString(); // Only add a reference, version, and reason once. UnificationVersion unificationVersion; if (!_preUnificationVersions.TryGetValue(key, out unificationVersion)) { unificationVersion = new UnificationVersion(); unificationVersion.referenceFullPath = referencePath; unificationVersion.version = version; unificationVersion.reason = reason; _preUnificationVersions[key] = unificationVersion; } }
internal void AddPreUnificationVersion(string referencePath, Version version, UnificationReason reason) { UnificationVersion version2; string key = referencePath + version.ToString() + reason.ToString(); if (!this.preUnificationVersions.TryGetValue(key, out version2)) { version2 = new UnificationVersion { referenceFullPath = referencePath, version = version, reason = reason }; this.preUnificationVersions[key] = version2; } }
/// <summary> /// Add a new version number for a version of this reference /// </summary> internal void AddPreUnificationVersion(String referencePath, Version version, UnificationReason reason) { string key = referencePath + version.ToString() + reason.ToString(); // Only add a reference, version, and reason once. UnificationVersion unificationVersion; if (!_preUnificationVersions.TryGetValue(key, out unificationVersion)) { unificationVersion = new UnificationVersion(); unificationVersion.referenceFullPath = referencePath; unificationVersion.version = version; unificationVersion.reason = reason; _preUnificationVersions[key] = unificationVersion; } }
private bool UnifyAssemblyNameVersions(AssemblyNameExtension assemblyName, out Version unifiedVersion, out UnificationReason unificationReason, out bool isPrerequisite, out bool? isRedistRoot, out string redistName) { unifiedVersion = assemblyName.Version; isPrerequisite = false; isRedistRoot = 0; redistName = null; unificationReason = UnificationReason.DidntUnify; if (assemblyName.Version != null) { if (this.remappedAssemblies != null) { foreach (DependentAssembly assembly in this.remappedAssemblies) { AssemblyNameExtension that = new AssemblyNameExtension((AssemblyName) assembly.PartialAssemblyName.Clone()); if (assemblyName.CompareBaseNameTo(that) == 0) { that.ReplaceVersion(assemblyName.Version); if (assemblyName.Equals(that)) { foreach (BindingRedirect redirect in assembly.BindingRedirects) { if (((assemblyName.Version >= redirect.OldVersionLow) && (assemblyName.Version <= redirect.OldVersionHigh)) && (assemblyName.Version != redirect.NewVersion)) { unifiedVersion = redirect.NewVersion; unificationReason = UnificationReason.BecauseOfBindingRedirect; return true; } } } } } } if (this.installedAssemblies != null) { this.installedAssemblies.GetInfo(assemblyName, out unifiedVersion, out isPrerequisite, out isRedistRoot, out redistName); if (unifiedVersion != assemblyName.Version) { unificationReason = UnificationReason.FrameworkRetarget; return (assemblyName.Version != unifiedVersion); } } } return false; }