/// <summary> /// 监控扩展。 /// </summary> /// <param name="descriptor">扩展描述符条目。</param> /// <param name="monitor">监控动作。</param> public override void Monitor(ExtensionDescriptorEntry descriptor, Action <IVolatileToken> monitor) { if (Disabled) { return; } if (DisableMonitoring) { return; } //如果程序集文件存在则进行监控。 var assemblyPath = GetAssemblyPath(descriptor); if (assemblyPath != null) { Logger.Debug("监控虚拟路径 \"{0}\"", assemblyPath); monitor(_applicationFolder.WhenPathChanges(assemblyPath)); return; } //如果该组件不存在,我们监测含有“bin”文件夹后,如果是在Visual Studio中,例如重新编译的组件可能存在,我们需要改变配置检测。 var assemblyDirectory = _applicationFolder.Combine(descriptor.Location, descriptor.Id, "bin"); if (!_applicationFolder.DirectoryExists(assemblyDirectory)) { return; } Logger.Debug("监控虚拟路径 \"{0}\"", assemblyDirectory); monitor(_applicationFolder.WhenPathChanges(assemblyDirectory)); }
private IEnumerable <ExtensionDescriptorEntry> HarvestExtensions(string path, string extensionType, string manifestName, bool manifestIsOptional) { var key = string.Format("{0}-{1}-{2}", path, manifestName, extensionType); return(_cacheManager.Get(key, ctx => { if (!DisableMonitoring) { Logger.Debug("监控虚拟路径 \"{0}\"", path); ctx.Monitor(_applicationFolder.WhenPathChanges(path)); } return AvailableExtensionsInFolder(path, extensionType, manifestName, manifestIsOptional).ToArray(); })); }
public PlacementFile Parse(string virtualPath) { return(_cacheManager.Get(virtualPath, context => { if (!DisableMonitoring) { Logger.Debug("监控虚拟路径 \"{0}\"", virtualPath); context.Monitor(_webSiteFolder.WhenPathChanges(virtualPath)); } var placementText = _webSiteFolder.ReadFile(virtualPath); return ParseImplementation(placementText); })); }