using System;
using System.Runtime.InteropServices;
using System.Threading;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Task = System.Threading.Tasks.Task;
using Cosmos.VS.ProjectSystem.VS.PropertyPages;
namespace Cosmos.VS.ProjectSystem
{
[Guid(PackageGuid)]
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
[ProvideObject(typeof(OldCosmosPropertyPage))]
[ProvideObject(typeof(CosmosPropertyPage))]
[ProvideProjectFactory(typeof(MigrateCosmosProjectFactory), null, "Cosmos Project Files (*.Cosmos);*.Cosmos", "Cosmos", "Cosmos", null)]
internal class CosmosProjectSystemPackage : AsyncPackage
{
///
/// The GUID for this package.
///
public const string PackageGuid = "29194faf-90ce-454b-bc53-08b722f1dadf";
private IVsProjectFactory _factory;
protected override async Task InitializeAsync(
CancellationToken cancellationToken,
IProgress progress)
{
await base.InitializeAsync(cancellationToken, progress).ConfigureAwait(false);
await JoinableTaskFactory.SwitchToMainThreadAsync();
_factory = new MigrateCosmosProjectFactory();
RegisterProjectFactory(_factory);
}
}
}