Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions Source/LoadedProjectsProfileManagerPackage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -332,31 +332,34 @@ private void SaveOptionsExternal()
SolutionInfo info = solMgr.GetSolutionInfo();
IVsQueryEditQuerySave2 queryEditQuerySave = (IVsQueryEditQuerySave2)GetService(typeof(SVsQueryEditQuerySave));

string tempPath = Path.GetTempFileName();
using (FileStream fs = new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.None))
{
m_repository.SaveJson(fs);
}

string targetPath = Path.ChangeExtension(info.SolutionFile, ".projectSets.json");

if (!AreFilesIdentical(tempPath, targetPath))
if (m_repository.ProjectSets.Any() || File.Exists(targetPath))
{
tagVSQuerySaveResult querySaveResult = tagVSQuerySaveResult.QSR_SaveOK;
if (queryEditQuerySave != null)

string tempPath = Path.GetTempFileName();
using (FileStream fs = new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.None))
{
uint result;
ErrorHandler.ThrowOnFailure(queryEditQuerySave.QuerySaveFile(targetPath, 0, null, out result));
querySaveResult = (tagVSQuerySaveResult)result;
m_repository.SaveJson(fs);
}

if (querySaveResult == tagVSQuerySaveResult.QSR_SaveOK)
if (!AreFilesIdentical(tempPath, targetPath))
{
var settings = GetSettings();
using (FileStream fin = new FileStream(tempPath, FileMode.Open, FileAccess.Read, FileShare.None))
using (FileStream fout = new FileStream(targetPath, FileMode.Create, FileAccess.Write, FileShare.None))
tagVSQuerySaveResult querySaveResult = tagVSQuerySaveResult.QSR_SaveOK;
if (queryEditQuerySave != null)
{
uint result;
ErrorHandler.ThrowOnFailure(queryEditQuerySave.QuerySaveFile(targetPath, 0, null, out result));
querySaveResult = (tagVSQuerySaveResult)result;
}

if (querySaveResult == tagVSQuerySaveResult.QSR_SaveOK)
{
fin.CopyTo(fout);
var settings = GetSettings();
using (FileStream fin = new FileStream(tempPath, FileMode.Open, FileAccess.Read, FileShare.None))
using (FileStream fout = new FileStream(targetPath, FileMode.Create, FileAccess.Write, FileShare.None))
{
fin.CopyTo(fout);
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Source/source.extension.vsixmanifest
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="6B92280F-2172-4391-A782-6967F1777D4A" Version="1.3.2" Language="en-US" Publisher="Peter Palotas" />
<Identity Id="6B92280F-2172-4391-A782-6967F1777D4A" Version="1.3.3" Language="en-US" Publisher="Peter Palotas" />
<DisplayName>Project Set Manager</DisplayName>
<Description xml:space="preserve">The Alphaleonis Project Set Manager allows saving and restoring which projects are currently loaded in the solution in named profiles. This makes it easier to work with very large solutions where you frequently find yourself unloading and loading different sets of projects to speed build and load times based on what you are currently working on.</Description>
<License>LICENSE.txt</License>
Expand Down