/// <summary> /// Adds an assembly set that is referenced by the assemblies of this addin. /// </summary> /// <param name="referencedAssemblySet">The referenced assembly set.</param> internal void AddReferencedAssemblySet(AssemblyResolutionSet referencedAssemblySet) { // if the referenced assembly is provided by this addin itself, don't bother to resolve it at the runtime. foreach (var referencedAssembly in referencedAssemblySet) { if (ReferenceEquals(referencedAssembly.DeclaringAddin, this)) { return; } } _referencedAssemblySets = _referencedAssemblySets ?? new List <AssemblyResolutionSet>(); if (_referencedAssemblySets.Contains(referencedAssemblySet)) { return; } _referencedAssemblySets.Add(referencedAssemblySet); var addinSet = new AddinResolutionSet(); if (Enabled) { // 如果插件初始状态定义为 Enabled,那么只要它引用的任何一个插件是 Enabled 的,插件最终解析状态就是 Enabled 的 var shouldEnable = false; foreach (var referencedAssembly in referencedAssemblySet) { addinSet.Add(referencedAssembly.DeclaringAddin); if (referencedAssembly.DeclaringAddin.Enabled) { shouldEnable = true; } } Enabled = shouldEnable; } else { foreach (var referencedAssembly in referencedAssemblySet) { addinSet.Add(referencedAssembly.DeclaringAddin); } } _referencedAddinSets = _referencedAddinSets ?? new List <AddinResolutionSet>(); _referencedAddinSets.Add(addinSet); }
bool TryLoadAndRegisterAssembly(ResolutionResult resolutionResult, AssemblyResolution assembly) { if (!assembly.TryLoad()) { resolutionResult.AddError("Failed to load assembly file " + assembly.AssemblyFile.FilePath); return(false); } AssemblyResolutionSet assemblySet; if (!_key2AssemblySets.TryGetValue(assembly.AssemblyKey, out assemblySet)) { assemblySet = new AssemblyResolutionSet(); _key2AssemblySets[assembly.AssemblyKey] = assemblySet; } //if (assembly.AssemblyFile.Uid != UidStorage.InvalidAssemblyUid) // _uid2AssemblySets.Add(assembly.AssemblyFile.Uid, assemblySet); assemblySet.Add(assembly); return(true); }
bool TryLoadAndRegisterAssembly(IMessageDialog dialog, AssemblyResolution assembly) { if (!assembly.TryLoad()) { dialog.AddError(""); return(false); } AssemblyResolutionSet assemblySet; if (!_key2AssemblySets.TryGetValue(assembly.AssemblyKey, out assemblySet)) { assemblySet = new AssemblyResolutionSet(); _key2AssemblySets[assembly.AssemblyKey] = assemblySet; } //if (assembly.AssemblyFile.Uid != UidProvider.InvalidAssemblyUid) // _uid2AssemblySets.Add(assembly.AssemblyFile.Uid, assemblySet); assemblySet.Add(assembly); return(true); }
public bool TryGetAssemblySet(AssemblyKey assemblyKey, out AssemblyResolutionSet assemblySet) { return(_key2AssemblySets.TryGetValue(assemblyKey, out assemblySet)); }