Skip to content
Open
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
2 changes: 1 addition & 1 deletion paket.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ nuget MahApps.Metro
nuget Paket.Core
nuget FSharp.Core redirects:force
nuget Mono.Cecil prerelease redirects:force
nuget Microsoft.VisualStudio.Sdk.BuildTasks.14.0 prerelease
//nuget Microsoft.VisualStudio.Sdk.BuildTasks.14.0 prerelease
nuget VSSDK.DTE.8 copy_local: false
nuget VSSDK.DTE.9 copy_local: false
nuget VSSDK.DTE.10 copy_local: false
Expand Down
337 changes: 235 additions & 102 deletions paket.lock

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,12 @@ public IEnumerable<Completion> GetCompletionEntries(CompletionContext context)
FSharpOption<int>.None,
FSharpOption<CancellationToken>.None);

foreach (var value in searchResults.ResultValue)
if (searchResults.IsOk)
{
yield return new Completion2(value, value, null, imageSource, "iconAutomationText");
foreach (var value in searchResults.ResultValue)
{
yield return new Completion2(value, value, null, imageSource, "iconAutomationText");
}
}
}

Expand Down
2 changes: 0 additions & 2 deletions src/Paket.VisualStudio/Paket.VisualStudio.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.props')" Label="Paket" />
<Import Project="..\..\packages\FSharp.Compiler.Tools\build\FSharp.Compiler.Tools.props" Condition="Exists('..\..\packages\FSharp.Compiler.Tools\build\FSharp.Compiler.Tools.props')" Label="Paket" />
<PropertyGroup>
<MinimumVisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">$(VisualStudioVersion)</MinimumVisualStudioVersion>
Expand Down Expand Up @@ -696,5 +695,4 @@
</ItemGroup>
</When>
</Choose>
<Import Project="..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0\build\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.targets')" Label="Paket" />
</Project>
2 changes: 1 addition & 1 deletion src/Paket.VisualStudio/Restore/AutoRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ public void Restore(Dependencies dependencies, IEnumerable<RestoringProject> pro
restorer.Restore(dependencies, projects);
}
}
}
}
21 changes: 18 additions & 3 deletions src/Paket.VisualStudio/Restore/ErrorReportRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,33 @@ public ErrorReportRestorer(IPackageRestorer restorer)

public void Restore(Dependencies dependencies, IEnumerable<RestoringProject> projects)
{
foreach (var project in projects)
if (projects == null)
{
try
{
restorer.Restore(dependencies, new[] { project });
restorer.Restore(dependencies, null);
}
catch (Exception ex)
{
PaketErrorPane.ShowError(ex.Message, project.ReferenceFile, "paket-restore.html");
PaketErrorPane.ShowError(ex.Message, dependencies.GetLockFile().FileName, "paket-restore.html");
PaketOutputPane.OutputPane.OutputStringThreadSafe(ex.Message + "\r\n");
}
}
else
{
foreach (var project in projects)
{
try
{
restorer.Restore(dependencies, new[] { project });
}
catch (Exception ex)
{
PaketErrorPane.ShowError(ex.Message, project.ReferenceFile, "paket-restore.html");
PaketOutputPane.OutputPane.OutputStringThreadSafe(ex.Message + "\r\n");
}
}
}
}
}
}
9 changes: 8 additions & 1 deletion src/Paket.VisualStudio/Restore/OutputPaneRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,14 @@ public void Restore(Dependencies dependencies, IEnumerable<RestoringProject> pro

try
{
restorer.Restore(dependencies, projects);
using (var loggingSub = Paket.Logging.@event.Publish.Subscribe(trace =>
{
PaketOutputPane.OutputPane.OutputStringThreadSafe(
"Paket: "+ trace.Text + (trace.NewLine ? "\r\n" : ""));
}))
{
restorer.Restore(dependencies, projects);
}
}
finally
{
Expand Down
10 changes: 10 additions & 0 deletions src/Paket.VisualStudio/Restore/PackageRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,25 @@ public class PackageRestorer
private readonly IPackageRestorer restorer;
private readonly DTE dte;
private readonly BuildEvents buildEvents;
private readonly SolutionEvents solutionEvents;

public PackageRestorer(IPackageRestorer restorer)
{
dte = (DTE)Package.GetGlobalService(typeof(DTE));
solutionEvents = dte.Events.SolutionEvents;
solutionEvents.Opened += SolutionEvents_Opened;
buildEvents = dte.Events.BuildEvents;
buildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;
this.restorer = restorer;
}

private void SolutionEvents_Opened()
{
var dir = SolutionExplorerExtensions.GetSolutionDirectory();
var dependencies = Dependencies.Locate(dir);
restorer.Restore(dependencies, null);
}

private void BuildEvents_OnBuildBegin(vsBuildScope scope, vsBuildAction action)
{
if (action == vsBuildAction.vsBuildActionClean)
Expand Down
7 changes: 3 additions & 4 deletions src/Paket.VisualStudio/Restore/PaketRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ public class PaketRestorer : IPackageRestorer
{
public void Restore(Dependencies dependencies, IEnumerable<RestoringProject> project)
{
dependencies.Restore(
FSharpOption<string>.None,
ListModule.OfSeq(project.Select(p => p.ReferenceFile)));
// Note: Performance optimization because this command is optimized in paket itself
dependencies.Restore();
}
}
}
}
31 changes: 25 additions & 6 deletions src/Paket.VisualStudio/Restore/WaitDialogRestorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,39 @@ public WaitDialogRestorer(IPackageRestorer restorer, IVsThreadedWaitDialogFactor

public void Restore(Dependencies dependencies, IEnumerable<RestoringProject> projects)
{
var projectsList = projects.ToList();
var projectsList = projects?.ToList();
IVsThreadedWaitDialog2 waitDialog;
waitDialogFactory.CreateInstance(out waitDialog);
waitDialog.StartWaitDialog("Paket", "Restoring packages", null, null, null, 0, false, true);
waitDialog.StartWaitDialog("Paket", "Restoring packages", "Initialize Paket", null, null, 0, false, true);

int i = 0;
try
{
foreach (var project in projectsList)
if (projectsList == null)
{
bool canceled;
waitDialog.UpdateProgress(string.Format("Restoring packages for {0}", project.ProjectName), null, null, i++, projectsList.Count, false, out canceled);
using (var loggingSub = Paket.Logging.@event.Publish.Subscribe(trace =>
{
bool canceled;
waitDialog.UpdateProgress(
"Restoring packages for Solution", trace.Text, trace.Text, i++, 50, false, out canceled);
}))
{
bool canceled;
waitDialog.UpdateProgress(
"Restoring packages for Solution", "Restoring packages", "Restoring packages", i++, 50, false, out canceled);

restorer.Restore(dependencies, new[] { project });
restorer.Restore(dependencies, null);
}
}
else
{
foreach (var project in projectsList)
{
bool canceled;
waitDialog.UpdateProgress(string.Format("Restoring packages for {0}", project.ProjectName), null, null, i++, projectsList.Count, false, out canceled);

restorer.Restore(dependencies, new[] { project });
}
}
}
finally
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,18 @@ public static IEnumerable<Project> GetAllProjects()
return DteUtils.DTE.Solution.Projects
.OfType<Project>()
.SelectMany(GetProjects)
.Where(p => File.Exists(p.FullName));
.Where(p => {
try
{
return File.Exists(p.FullName);
}
catch (NotImplementedException e)
{
// I believe this happens when a project is currently not loaded...
PaketOutputPane.OutputPane.OutputString($"Error while trying to get FullName of project '{p.Name}': {e}\r\n");
return false;
}
});
}

private static IEnumerable<Project> GetProjects(Project project)
Expand Down
1 change: 0 additions & 1 deletion src/Paket.VisualStudio/paket.references
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ VSSDK.Editor.12
VSSDK.ComponentModelHost.12
VSSDK.Shell.12
VSSDK.Shell.Interop.12
Microsoft.VisualStudio.Sdk.BuildTasks.14.0
reactiveui
reactiveui-events
MahApps.Metro
Expand Down