Skip to content

Commit 4bcd031

Browse files
committed
Do not export ExtensionManager extension
1 parent adbde5a commit 4bcd031

File tree

7 files changed

+36
-6
lines changed

7 files changed

+36
-6
lines changed

src/ExtensionManager.Vsix.Shared/ExtensionManager.Vsix.Shared.projitems

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<ItemGroup>
1212
<Compile Include="$(MSBuildThisFileDirectory)ExtensionManagerPackage.cs" />
1313
<Compile Include="$(MSBuildThisFileDirectory)Properties\AssemblyInfo.cs" />
14+
<Compile Include="$(MSBuildThisFileDirectory)ThisVsixInfo.cs" />
1415
</ItemGroup>
1516
<ItemGroup>
1617
<Folder Include="$(MSBuildThisFileDirectory)Properties\" />

src/ExtensionManager.Vsix.Shared/ExtensionManagerPackage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ protected override async Task InitializeAsync(CancellationToken cancellationToke
4242
{
4343
var services = new ServiceCollection()
4444
.ConfigureVSFacade(await CreateVSServiceFactoryAsync())
45-
.ConfigureExtensionManager()
45+
.ConfigureExtensionManager(new ThisVsixInfo())
4646
.BuildServiceProvider();
4747

4848
var solutions = services.GetRequiredService<IVSSolutions>();
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace ExtensionManager;
2+
3+
public sealed class ThisVsixInfo : IThisVsixInfo
4+
{
5+
public string Id => Vsix.Id;
6+
public string Name => Vsix.Name;
7+
public string Description => Vsix.Description;
8+
public string Language => Vsix.Language;
9+
public string Version => Vsix.Version;
10+
public string Author => Vsix.Author;
11+
public string Tags => Vsix.Tags;
12+
}

src/ExtensionManager/Features/Export/ExportFeatureBase.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using ExtensionManager.Manifest;
77
using ExtensionManager.UI;
88
using ExtensionManager.UI.Worker;
9-
using ExtensionManager.VisualStudio;
109
using ExtensionManager.VisualStudio.Documents;
1110
using ExtensionManager.VisualStudio.Extensions;
1211
using ExtensionManager.VisualStudio.MessageBox;
@@ -17,14 +16,16 @@ public abstract class ExportFeatureBase : IFeature, IExportWorker
1716
{
1817
public sealed class Args
1918
{
19+
public IThisVsixInfo VsixInfo { get; }
2020
public IVSDocuments Documents { get; }
2121
public IVSMessageBox MessageBox { get; }
2222
public IVSExtensions Extensions { get; }
2323
public IDialogService DialogService { get; }
2424
public IManifestService ManifestService { get; }
2525

26-
public Args(IVSDocuments documents, IVSMessageBox messageBox, IVSExtensions extensions, IDialogService dialogService, IManifestService manifestService)
26+
public Args(IThisVsixInfo vsixInfo, IVSDocuments documents, IVSMessageBox messageBox, IVSExtensions extensions, IDialogService dialogService, IManifestService manifestService)
2727
{
28+
VsixInfo = vsixInfo;
2829
Documents = documents;
2930
MessageBox = messageBox;
3031
Extensions = extensions;
@@ -35,6 +36,7 @@ public Args(IVSDocuments documents, IVSMessageBox messageBox, IVSExtensions exte
3536

3637
private readonly Args _args;
3738

39+
protected IThisVsixInfo VsixInfo => _args.VsixInfo;
3840
protected IVSDocuments Documents => _args.Documents;
3941
protected IVSMessageBox MessageBox => _args.MessageBox;
4042
protected IVSExtensions Extensions => _args.Extensions;
@@ -50,6 +52,8 @@ public async Task ExecuteAsync()
5052
{
5153
var manifest = ManifestService.CreateNew();
5254
var installedExtensions = await Extensions.GetInstalledExtensionsAsync().ConfigureAwait(false);
55+
56+
installedExtensions.RemoveAll(vsix => vsix.Id == VsixInfo.Id);
5357

5458
await ShowExportDialogAsync(manifest, this, installedExtensions);
5559
}

src/ExtensionManager/Features/VisualStudioExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ namespace ExtensionManager.Features;
1313

1414
internal static class VisualStudioExtensions
1515
{
16-
public static async Task<IReadOnlyCollection<IVSExtension>> GetInstalledExtensionsAsync(this IVSExtensions extensions)
16+
public static async Task<List<IVSExtension>> GetInstalledExtensionsAsync(this IVSExtensions extensions)
1717
{
1818
var installedIds = await extensions.GetInstalledExtensionIdsAsync().ConfigureAwait(false);
1919

2020
// Filter the installed extensions to only be the ones that exist on the Marketplace
2121
return (await extensions.GetGalleryExtensionsAsync(installedIds).ConfigureAwait(false))
2222
.OrderBy(e => e.Name)
23-
.ToArray();
23+
.ToList();
2424
}
2525

2626
public static async Task<string?> GetCurrentSolutionExtensionsManifestFilePathAsync(this IVSSolutions solutions, IVSMessageBox messageBox)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace ExtensionManager;
2+
3+
public interface IThisVsixInfo
4+
{
5+
string Id { get; }
6+
string Name { get; }
7+
string Description { get; }
8+
string Language { get; }
9+
string Version { get; }
10+
string Author { get; }
11+
string Tags { get; }
12+
}

src/ExtensionManager/ServiceCollectionExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ namespace ExtensionManager;
1010

1111
public static class ServiceCollectionExtensions
1212
{
13-
public static IServiceCollection ConfigureExtensionManager(this IServiceCollection services)
13+
public static IServiceCollection ConfigureExtensionManager(this IServiceCollection services, IThisVsixInfo thisVsixInfo)
1414
{
1515
return services
1616
.AddDialogService()
1717
.AddManifestService()
18+
.AddSingleton(thisVsixInfo)
1819
.AddTransient<ExportFeatureBase.Args>()
1920
.AddTransient<InstallFeatureBase.Args>()
2021
.AddTransient<IFeatureExecutor, FeatureExecutor>()

0 commit comments

Comments
 (0)