问题
I'm working with CSS, HTML, and JavaScript in my classes, and I've recently started working with Visual Studio 2015. In Notepad++, there's an add-on that allowed me to automatically save all my opened documents as soon as it lost focus. This saved me a lot of time, as I go back and forth frequently between the page I'm working on and the coding for it.
I'm hoping there is a similar add-on for Visual Studio 2015, so I can stop forgetting to save before checking my work on its web page! Anyone know of any?
回答1:
You can use the following extension for Visual Commander to auto save files on switching away from Visual Studio:
public class E : VisualCommanderExt.IExtension
{
public void SetSite(EnvDTE80.DTE2 DTE_, Microsoft.VisualStudio.Shell.Package package)
{
DTE = DTE_;
System.Windows.Application.Current.Deactivated += OnDeactivated;
}
public void Close()
{
System.Windows.Application.Current.Deactivated -= OnDeactivated;
}
private void OnDeactivated(object sender, System.EventArgs e)
{
try
{
DTE.ExecuteCommand("File.SaveAll");
}
catch (System.Exception ex)
{
}
}
private EnvDTE80.DTE2 DTE;
}
回答2:
The solution above with
DTE.ExecuteCommand("File.SaveAll");
is too slow in case of 1000+ projects in solution, MSVS UI hangs for several seconds on each losing focus event and extremely consumes CPU, even if there are no unsaved changes.
I've edited OnDeactivated() method, and it works much faster in my cases:
private void OnDeactivated(object sender, System.EventArgs e)
{
try
{
EnvDTE.Documents docs = DTE.Documents;
for (int i = 1; i <= docs.Count; i++) {
EnvDTE.Document doc = docs.Item(i);
if (!doc.Saved) {
doc.Save();
}
}
}
catch (System.Exception ex)
{
}
}
来源:https://stackoverflow.com/questions/33574292/how-can-i-autosave-my-visual-studio-2015-files-when-it-loses-focus