/// <summary> /// Event callback. Called when one of the assembly file is changed. /// </summary> /// <param name="sender">The FileChangeManager object.</param> /// <param name="e">Event args containing the file name that was updated.</param> private void OnAssemblyReferenceChangedOnDisk(object sender, FileChangedOnDiskEventArgs e) { Debug.Assert(e != null, "No event args specified for the FileChangedOnDisk event"); // We only care about file deletes and adds so check before enumerating references. // We also need to watch time because a rename operation from an old name to the // watched name will generate this event (in which case we want to show that the // file now exists). if ((e.FileChangeFlag & (_VSFILECHANGEFLAGS.VSFILECHG_Del | _VSFILECHANGEFLAGS.VSFILECHG_Add | _VSFILECHANGEFLAGS.VSFILECHG_Time)) == 0) { return; } if (Microsoft.VisualStudio.NativeMethods.IsSamePath(e.FileName, this.Url)) { this.OnInvalidateItems(this.Parent); } }
private async Task ReferenceChangedOnDisk(FileChangedOnDiskEventArgs e) { var analyzer = ((PythonProjectNode)ProjectMgr).GetAnalyzer(); if (analyzer != null && PathUtils.IsSamePath(e.FileName, Url)) { if ((e.FileChangeFlag & (_VSFILECHANGEFLAGS.VSFILECHG_Attr | _VSFILECHANGEFLAGS.VSFILECHG_Size | _VSFILECHANGEFLAGS.VSFILECHG_Time | _VSFILECHANGEFLAGS.VSFILECHG_Add)) != 0) { // file was modified, unload and reload the extension module from our database. await analyzer.RemoveReferenceAsync(new ProjectAssemblyReference(AssemblyName, Url)); await AnalyzeReferenceAsync(analyzer); } else if ((e.FileChangeFlag & _VSFILECHANGEFLAGS.VSFILECHG_Del) != 0) { // file was deleted, unload from our extension database await analyzer.RemoveReferenceAsync(new ProjectAssemblyReference(AssemblyName, Url)); } } }
/// <summary> /// Event callback. Called when one of the assembly file is changed. /// </summary> /// <param name="sender">The FileChangeManager object.</param> /// <param name="e">Event args containing the file name that was updated.</param> protected virtual void OnAssemblyReferenceChangedOnDisk(object sender, FileChangedOnDiskEventArgs e) { Debug.Assert(e != null, "No event args specified for the FileChangedOnDisk event"); if (e == null) { return; } // We only care about file deletes, so check for one before enumerating references. if ((e.FileChangeFlag & _VSFILECHANGEFLAGS.VSFILECHG_Del) == 0) { return; } if (CommonUtils.IsSamePath(e.FileName, this.assemblyPath)) { ProjectMgr.OnInvalidateItems(this.Parent); } }
protected override void OnAssemblyReferenceChangedOnDisk(object sender, FileChangedOnDiskEventArgs e) { base.OnAssemblyReferenceChangedOnDisk(sender, e); var analyzer = ((PythonProjectNode)ProjectMgr).GetAnalyzer(); if (analyzer != null && CommonUtils.IsSamePath(e.FileName, Url)) { if ((e.FileChangeFlag & (_VSFILECHANGEFLAGS.VSFILECHG_Attr | _VSFILECHANGEFLAGS.VSFILECHG_Size | _VSFILECHANGEFLAGS.VSFILECHG_Time | _VSFILECHANGEFLAGS.VSFILECHG_Add)) != 0) { // file was modified, unload and reload the extension module from our database. analyzer.RemoveReference(new ProjectAssemblyReference(AssemblyName, Url)); AnalyzeReference(analyzer.Interpreter as IPythonInterpreterWithProjectReferences); } else if ((e.FileChangeFlag & _VSFILECHANGEFLAGS.VSFILECHG_Del) != 0) { // file was deleted, unload from our extension database analyzer.RemoveReference(new ProjectAssemblyReference(AssemblyName, Url)); } } }