public static bool SaveSolution(IServiceProvider serviceProvider, bool silent)
{
if (serviceProvider == null)
{
throw new ArgumentNullException(nameof(serviceProvider));
}
var solutionService = (IVsSolution)serviceProvider.GetService(typeof(SVsSolution));
__VSSLNSAVEOPTIONS saveOptions = __VSSLNSAVEOPTIONS.SLNSAVEOPT_SaveIfDirty;
if (!silent)
{
saveOptions |= __VSSLNSAVEOPTIONS.SLNSAVEOPT_PromptSave;
}
int hr = solutionService.SaveSolutionElement((uint)saveOptions, null, 0);
// True if user clicked Yes, false otherwise (No/Cancel/Esc/Close dialog)
return hr != VSConstants.E_ABORT && ErrorHandler.ThrowOnFailure(hr) == VSConstants.S_OK;
}