// @return: whether there is collisions. protected bool TryRegisterAssets(ResolutionResult resolutionResult, ResolutionContext ctx, AddinResolution adnResolution, AddinCollision addinCollision) { var success = true; if (adnResolution.Assemblies != null) { for (int i = 0; i < adnResolution.Assemblies.Count; i++) { var asm = adnResolution.Assemblies[i]; if (ctx.TryRegisterAssembly(resolutionResult, asm)) { continue; } // if the assembly loading (with mono.cecil) is failed, it's because this is not a valid managed assembly (might be a native library), // just remove it from the assembly list, and add it to the data file list instead. adnResolution.Assemblies.RemoveAt(i); i -= 1; adnResolution.DataFiles.Add(new DataFileResolution { FilePath = asm.AssemblyFile.FilePath }); } //foreach (var asm in adnResolution.Assemblies) // ctx.TryRegisterAssembly(resolutionResult, asm); } if (adnResolution.ExtensionPoints != null) { foreach (var extensionPoint in adnResolution.ExtensionPoints) { ExtensionPointResolution existingExtensionPoint; if (!ctx.TryRegisterExtensionPoint(resolutionResult, extensionPoint, out existingExtensionPoint)) { var key = new ExtensionPointCollisionKey(existingExtensionPoint.Name); addinCollision.Add(key, adnResolution, existingExtensionPoint.DeclaringAddin); success = false; } } } // get all extension builders defined under extension point and extension builder set var extensionBuilders = adnResolution.GetAllExtensionBuilders(); if (extensionBuilders != null) { foreach (var extensionBuilder in extensionBuilders) { if (extensionBuilder.ExtensionBuilderKind == ExtensionBuilderKind.Referenced) { continue; } ExtensionBuilderResolution existingExtensionBuilder; if (!ctx.TryRegisterExtensionBuilder(resolutionResult, extensionBuilder, out existingExtensionBuilder)) { var key = new ExtensionBuilderCollisionKey(existingExtensionBuilder.Name); addinCollision.Add(key, adnResolution, existingExtensionBuilder.DeclaringAddin); success = false; } } } var extensions = adnResolution.GetAllExtensions(); if (extensions != null) { foreach (var extension in extensions) { ExtensionResolution existingExtension; if (!ctx.TryRegisterExtension(resolutionResult, extension, out existingExtension)) { var key = new ExtensionCollisionKey(existingExtension.Head.Path); addinCollision.Add(key, adnResolution, existingExtension.DeclaringAddin); success = false; } } } return(success); }
// @return: whether there is collisions. protected bool TryRegisterAssets(IMessageDialog dialog, ResolutionContext ctx, AddinResolution adnResolution, AddinCollision addinCollision) { var success = true; if (adnResolution.Assemblies != null) { foreach (var asm in adnResolution.Assemblies) { ctx.TryRegisterAssembly(dialog, asm); } } if (adnResolution.ExtensionPoints != null) { foreach (var extensionPoint in adnResolution.ExtensionPoints) { ExtensionPointResolution existingExtensionPoint; if (!ctx.TryRegisterExtensionPoint(dialog, extensionPoint, out existingExtensionPoint)) { var key = new ExtensionPointCollisionKey(existingExtensionPoint.Id); addinCollision.Add(key, adnResolution, existingExtensionPoint.DeclaringAddin); success = false; } } } // get all extension builders defined under extension point and extension builder set var extensionBuilders = adnResolution.GetAllExtensionBuilders(); if (extensionBuilders != null) { foreach (var extensionBuilder in extensionBuilders) { if (extensionBuilder.ExtensionBuilderKind == ExtensionBuilderKind.Referenced) { continue; } ExtensionBuilderResolution existingExtensionBuilder; if (!ctx.TryRegisterExtensionBuilder(dialog, extensionBuilder, out existingExtensionBuilder)) { var key = new ExtensionBuilderCollisionKey(existingExtensionBuilder.Id); addinCollision.Add(key, adnResolution, existingExtensionBuilder.DeclaringAddin); success = false; } } } var extensions = adnResolution.GetAllExtensions(); if (extensions != null) { foreach (var extension in extensions) { ExtensionResolution existingExtension; if (!ctx.TryRegisterExtension(dialog, extension, out existingExtension)) { var key = new ExtensionCollisionKey(existingExtension.Head.Path); addinCollision.Add(key, adnResolution, existingExtension.DeclaringAddin); success = false; } } } return(success); }