From e6adb3391450a9c0aaa861588100a162f1626ff3 Mon Sep 17 00:00:00 2001 From: Ahmed Elsawalhy Date: Mon, 4 Oct 2021 20:37:24 +0300 Subject: [PATCH] Improved: upgraded to VS Async API. Fixed: non-existent entities in settings persisting, causing error with 'generate cached'. --- .../CrmCodeGenerator.VSPackagePackage.cs | 110 +++++-- .../CrmPluginRegExt.VSPackage.csproj | 284 ++++++++++++++---- CrmCodeGenerator.VSPackage/Dialogs/Login.xaml | 4 +- .../Dialogs/Login.xaml.cs | 2 +- .../Helpers/ConnectionHelper.cs | 24 +- .../Properties/AssemblyInfo.cs | 8 +- CrmCodeGenerator.VSPackage/packages.config | 100 ++++-- .../source.extension.vsixmanifest | 4 +- README.md | 5 +- 9 files changed, 415 insertions(+), 126 deletions(-) diff --git a/CrmCodeGenerator.VSPackage/CrmCodeGenerator.VSPackagePackage.cs b/CrmCodeGenerator.VSPackage/CrmCodeGenerator.VSPackagePackage.cs index f20c120..aa4bd42 100644 --- a/CrmCodeGenerator.VSPackage/CrmCodeGenerator.VSPackagePackage.cs +++ b/CrmCodeGenerator.VSPackage/CrmCodeGenerator.VSPackagePackage.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text.RegularExpressions; +using System.Threading; using System.Windows; using CrmPluginEntities; using CrmPluginRegExt.VSPackage.Dialogs; @@ -18,6 +19,7 @@ using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using Yagasoft.Libraries.Common; +using Task = System.Threading.Tasks.Task; #endregion @@ -34,17 +36,17 @@ namespace CrmPluginRegExt.VSPackage /// // This attribute tells the PkgDef creation utility (CreatePkgDef.exe) that this class is // a package. - [PackageRegistration(UseManagedResourcesOnly = true)] + [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] // This attribute is used to register the information needed to show this package // in the Help/About dialog of Visual Studio. [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] //this causes the class to load when VS starts [ProvideAutoLoad("ADFC4E64-0397-11D1-9F4E-00A0C911004F")] - [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasSingleProject_string)] - [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasMultipleProjects_string)] + //[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasSingleProject_string)] + //[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasMultipleProjects_string)] // This attribute is needed to let the shell know that this package exposes some menus. [ProvideMenuResource("Menus.ctmenu", 1)] [Guid(GuidList.guidPluginRegExt_VSPackagePkgString)] - public sealed class CrmPluginRegExt_VSPackagePackage : Package, IVsSolutionEvents3 + public sealed class CrmPluginRegExt_VSPackagePackage : AsyncPackage, IVsSolutionEvents3 { /// /// Default constructor of the package. @@ -67,8 +69,10 @@ public CrmPluginRegExt_VSPackagePackage() /// Initialization of the package; this method is called right after the package is sited, so this is the place /// where you can put all the initialization code that rely on services provided by VisualStudio. /// - protected override void Initialize() + protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { + await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken); + AssemblyHelpers.RedirectAssembly("Microsoft.Xrm.Sdk", new Version("9.0.0.0"), "31bf3856ad364e35"); AssemblyHelpers.RedirectAssembly("Microsoft.Xrm.Sdk.Deployment", new Version("9.0.0.0"), "31bf3856ad364e35"); AssemblyHelpers.RedirectAssembly("Microsoft.Xrm.Tooling.Connector", new Version("4.0.0.0"), "31bf3856ad364e35"); @@ -77,34 +81,76 @@ protected override void Initialize() AssemblyHelpers.RedirectAssembly("Newtonsoft.Json", new Version("10.0.0.0"), "30ad4fe6b2a6aeed"); Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", ToString())); - base.Initialize(); + await base.InitializeAsync(cancellationToken, progress); // Add our command handlers for menu (commands must exist in the .vsct file) - var mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; - - if (null != mcs) + if (await GetServiceAsync(typeof (IMenuCommandService)) is OleMenuCommandService mcs) { var registerCmd = new CommandID(GuidList.guidPluginRegExt_VSPackageCmdSet, (int)PkgCmdIDList.cmdidRegisterModifyPlugin); - var registerItem = new MenuCommand(RegisterModifyPluginCallback, registerCmd); + var registerItem = new MenuCommand( + async (o, e) => + { + try + { + await RegisterModifyPluginCallbackAsync(o, e); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + }, registerCmd); mcs.AddCommand(registerItem); var updateCmd = new CommandID(GuidList.guidPluginRegExt_VSPackageCmdSet, (int)PkgCmdIDList.cmdidUpdatePlugin); - var updateItem = new MenuCommand(UpdatePluginCallback, updateCmd); + var updateItem = new MenuCommand( + async (o, e) => + { + try + { + await UpdatePluginCallbackAsync(o, e); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + }, updateCmd); mcs.AddCommand(updateItem); var multiRegisterCmd = new CommandID(GuidList.guidPluginRegExt_VSPackageCmdSet, (int)PkgCmdIDList.cmdidMultiRegisterModifyPlugin); - var multiRegisterItem = new MenuCommand(RegisterModifyPluginCallback, multiRegisterCmd); + var multiRegisterItem = new MenuCommand( + async (o, e) => + { + try + { + await RegisterModifyPluginCallbackAsync(o, e); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + }, multiRegisterCmd); mcs.AddCommand(multiRegisterItem); var multiUpdateCmd = new CommandID(GuidList.guidPluginRegExt_VSPackageCmdSet, (int)PkgCmdIDList.cmdidMultiUpdatePlugin); - var multiUpdateItem = new MenuCommand(UpdatePluginCallback, multiUpdateCmd); + var multiUpdateItem = new MenuCommand( + async (o, e) => + { + try + { + await UpdatePluginCallbackAsync(o, e); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + }, multiUpdateCmd); mcs.AddCommand(multiUpdateItem); } - AdviseSolutionEvents(); + await AdviseSolutionEventsAsync(); } protected override void Dispose(bool disposing) @@ -117,16 +163,24 @@ protected override void Dispose(bool disposing) private IVsSolution solution = null; private uint _handleCookie; - private void AdviseSolutionEvents() + private async Task AdviseSolutionEventsAsync() { + await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken); + UnadviseSolutionEvents(); - solution = GetService(typeof(SVsSolution)) as IVsSolution; - solution?.AdviseSolutionEvents(this, out _handleCookie); + solution = await GetServiceAsync(typeof (SVsSolution)) as IVsSolution; + + if (solution != null) + { + solution.AdviseSolutionEvents(this, out _handleCookie); + } } private void UnadviseSolutionEvents() { + ThreadHelper.ThrowIfNotOnUIThread(); + if (solution != null) { if (_handleCookie != uint.MaxValue) @@ -146,8 +200,10 @@ private void UnadviseSolutionEvents() /// See the Initialize method to see how the menu item is associated to this function using /// the OleMenuCommandService service and the MenuCommand class. /// - private void RegisterModifyPluginCallback(object sender, EventArgs args) + private async Task RegisterModifyPluginCallbackAsync(object sender, EventArgs args) { + await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken); + try { var session = Math.Abs(DateTime.Now.ToString(CultureInfo.CurrentCulture).GetHashCode()); @@ -163,7 +219,7 @@ private void RegisterModifyPluginCallback(object sender, EventArgs args) foreach (var project in selected) { Status.Update($">>> Processing project: {DteHelper.GetProjectName(project)} <<<"); - RegisterModifyPlugin(project); + await RegisterModifyPluginAsync(project); Status.Update($"^^^ Finished processing project: {DteHelper.GetProjectName(project)} ^^^"); } @@ -190,15 +246,17 @@ private void RegisterModifyPluginCallback(object sender, EventArgs args) } } - private void RegisterModifyPlugin(Project project) + private async Task RegisterModifyPluginAsync(Project project) { DteHelper.SetCurrentProject(project); - var regWindow = new Login(GetService(typeof(SDTE)) as DTE2); + var regWindow = new Login(await GetServiceAsync(typeof(SDTE)) as DTE2); regWindow.ShowModal(); } - private void UpdatePluginCallback(object sender, EventArgs args) + private async Task UpdatePluginCallbackAsync(object sender, EventArgs args) { + await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken); + try { var session = Math.Abs(DateTime.Now.ToString(CultureInfo.CurrentCulture).GetHashCode()); @@ -212,7 +270,7 @@ private void UpdatePluginCallback(object sender, EventArgs args) foreach (var project in DteHelper.GetSelectedProjects()) { Status.Update($">>> Processing project: {DteHelper.GetProjectName(project)} <<<"); - UpdatePlugin(project); + await UpdatePluginAsync(project); Status.Update($"^^^ Finished processing project: {DteHelper.GetProjectName(project)} ^^^"); } @@ -239,7 +297,7 @@ private void UpdatePluginCallback(object sender, EventArgs args) } } - private void UpdatePlugin(Project project) + private async Task UpdatePluginAsync(Project project) { DteHelper.SetCurrentProject(project); @@ -249,7 +307,7 @@ private void UpdatePlugin(Project project) // if no connection info, then it's a new run if (settings.ConnectionString.IsEmpty()) { - RegisterModifyPlugin(project); + await RegisterModifyPluginAsync(project); } else { @@ -287,7 +345,7 @@ private void UpdatePlugin(Project project) else { // else open dialogue - RegisterModifyPlugin(project); + await RegisterModifyPluginAsync(project); } } } diff --git a/CrmCodeGenerator.VSPackage/CrmPluginRegExt.VSPackage.csproj b/CrmCodeGenerator.VSPackage/CrmPluginRegExt.VSPackage.csproj index 6653605..3adb4b8 100644 --- a/CrmCodeGenerator.VSPackage/CrmPluginRegExt.VSPackage.csproj +++ b/CrmCodeGenerator.VSPackage/CrmPluginRegExt.VSPackage.csproj @@ -1,5 +1,6 @@  + 15.0 11.0 @@ -75,16 +76,24 @@ False ..\lib\CrmPluginEntities.dll - + + ..\packages\EnvDTE.8.0.2\lib\net10\EnvDTE.dll True - + + ..\packages\EnvDTE100.10.0.3\lib\net20\EnvDTE100.dll True + ..\packages\EnvDTE80.8.0.3\lib\net10\EnvDTE80.dll True + ..\packages\EnvDTE90.9.0.3\lib\net10\EnvDTE90.dll + True + + + ..\packages\EnvDTE90a.9.0.3\lib\net10\EnvDTE90a.dll True @@ -241,87 +250,188 @@ True + + ..\packages\Microsoft.VisualStudio.CommandBars.8.0.0.1\lib\net10\Microsoft.VisualStudio.CommandBars.dll + True + + + ..\packages\Microsoft.VisualStudio.ComponentModelHost.15.0.26228\lib\net45\Microsoft.VisualStudio.ComponentModelHost.dll + + + ..\packages\Microsoft.VisualStudio.CoreUtility.15.0.26228\lib\net45\Microsoft.VisualStudio.CoreUtility.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.Engine.15.0.26228\lib\net45\Microsoft.VisualStudio.Debugger.Engine.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.Interop.10.0.10.0.30320\lib\net20\Microsoft.VisualStudio.Debugger.Interop.10.0.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.Interop.11.0.11.0.50728\lib\net20\Microsoft.VisualStudio.Debugger.Interop.11.0.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.Interop.12.0.12.0.21006\lib\net20\Microsoft.VisualStudio.Debugger.Interop.12.0.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.Interop.14.0.14.3.25408\lib\net20\Microsoft.VisualStudio.Debugger.Interop.14.0.dll + True + + + ..\packages\Microsoft.VisualStudio.Debugger.Interop.15.0.15.0.26228\lib\Microsoft.VisualStudio.Debugger.Interop.15.0.dll + + + ..\packages\Microsoft.VisualStudio.Debugger.InteropA.9.0.21023\lib\net10\Microsoft.VisualStudio.Debugger.InteropA.dll + + ..\packages\Microsoft.VisualStudio.Designer.Interfaces.1.1.4323\lib\net11\Microsoft.VisualStudio.Designer.Interfaces.dll True - - ..\packages\VSSDK.GraphModel.11.0.4\lib\net45\Microsoft.VisualStudio.GraphModel.dll - False + + ..\packages\Microsoft.VisualStudio.DpiAwareness.6.0.28727\lib\net46\Microsoft.VisualStudio.DpiAwareness.dll + + + ..\packages\Microsoft.VisualStudio.Editor.15.0.26228\lib\net45\Microsoft.VisualStudio.Editor.dll + + + ..\packages\Microsoft.VisualStudio.ImageCatalog.15.0.26228\lib\net45\Microsoft.VisualStudio.ImageCatalog.dll + + + ..\packages\Microsoft.VisualStudio.Imaging.15.0.26228\lib\net45\Microsoft.VisualStudio.Imaging.dll + + + ..\packages\Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime.14.3.26930\lib\net20\Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime.dll + True + + + ..\packages\Microsoft.VisualStudio.Language.Intellisense.15.0.26228\lib\net45\Microsoft.VisualStudio.Language.Intellisense.dll + + + ..\packages\Microsoft.VisualStudio.Language.NavigateTo.Interfaces.15.0.26228\lib\net45\Microsoft.VisualStudio.Language.NavigateTo.Interfaces.dll + + + ..\packages\Microsoft.VisualStudio.Language.StandardClassification.15.0.26228\lib\net45\Microsoft.VisualStudio.Language.StandardClassification.dll - ..\packages\VSSDK.OLE.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.OLE.Interop.dll - True - False + ..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6071\lib\Microsoft.VisualStudio.OLE.Interop.dll - - ..\packages\Microsoft.VisualStudio.Services.InteractiveClient.14.95.3\lib\net45\Microsoft.VisualStudio.Services.Client.dll - True + + ..\packages\Microsoft.VisualStudio.Package.LanguageService.15.0.15.0.26228\lib\Microsoft.VisualStudio.Package.LanguageService.15.0.dll - - ..\packages\Microsoft.VisualStudio.Services.Client.14.95.3\lib\net45\Microsoft.VisualStudio.Services.Common.dll - True + + ..\packages\Microsoft.VisualStudio.ProjectAggregator.8.0.50728\lib\net20\Microsoft.VisualStudio.ProjectAggregator.dll + True - - ..\packages\Microsoft.VisualStudio.Services.Client.14.95.3\lib\net45\Microsoft.VisualStudio.Services.WebApi.dll - True + + ..\packages\Microsoft.VisualStudio.Setup.Configuration.Interop.1.16.30\lib\net35\Microsoft.VisualStudio.Setup.Configuration.Interop.dll + True - - ..\packages\VSSDK.Shell.12.12.0.4\lib\net45\Microsoft.VisualStudio.Shell.12.0.dll - False + + ..\packages\Microsoft.VisualStudio.Shell.15.0.15.0.26228\lib\Microsoft.VisualStudio.Shell.15.0.dll - - ..\packages\VSSDK.Shell.Immutable.10.10.0.4\lib\net40\Microsoft.VisualStudio.Shell.Immutable.10.0.dll - True - False + + ..\packages\Microsoft.VisualStudio.Shell.Design.15.0.26228\lib\net45\Microsoft.VisualStudio.Shell.Design.dll - - ..\packages\VSSDK.Shell.Immutable.11.11.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.11.0.dll - True - False + + ..\packages\Microsoft.VisualStudio.Shell.Embeddable.15.0.26228\lib\net45\Microsoft.VisualStudio.Shell.Embeddable.dll + True - - ..\packages\VSSDK.Shell.Immutable.12.12.0.4\lib\net45\Microsoft.VisualStudio.Shell.Immutable.12.0.dll - True - False + + ..\packages\Microsoft.VisualStudio.Shell.Framework.15.0.26228\lib\net45\Microsoft.VisualStudio.Shell.Framework.dll - ..\packages\VSSDK.Shell.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.dll - True - False + ..\packages\Microsoft.VisualStudio.Shell.Interop.7.10.6072\lib\net11\Microsoft.VisualStudio.Shell.Interop.dll + ..\packages\Microsoft.VisualStudio.Shell.Interop.10.0.10.0.30320\lib\net20\Microsoft.VisualStudio.Shell.Interop.10.0.dll + True + + + ..\packages\Microsoft.VisualStudio.Shell.Interop.11.0.11.0.61031\lib\net20\Microsoft.VisualStudio.Shell.Interop.11.0.dll + True + + + ..\packages\Microsoft.VisualStudio.Shell.Interop.12.0.12.0.30111\lib\net20\Microsoft.VisualStudio.Shell.Interop.12.0.dll + True + + + ..\packages\Microsoft.VisualStudio.Shell.Interop.12.1.DesignTime.12.1.30329.0\lib\net20\Microsoft.VisualStudio.Shell.Interop.12.1.DesignTime.dll + True + + + ..\packages\Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime.14.3.26929\lib\net20\Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime.dll + True + + + ..\packages\Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime.15.0.26201\lib\Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime.dll True - ..\packages\VSSDK.Shell.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.8.0.dll - True - False + ..\packages\Microsoft.VisualStudio.Shell.Interop.8.0.8.0.50728\lib\net11\Microsoft.VisualStudio.Shell.Interop.8.0.dll - ..\packages\VSSDK.Shell.Interop.9.9.0.4\lib\net20\Microsoft.VisualStudio.Shell.Interop.9.0.dll - True - False + ..\packages\Microsoft.VisualStudio.Shell.Interop.9.0.9.0.30729\lib\Microsoft.VisualStudio.Shell.Interop.9.0.dll + + + ..\packages\Microsoft.VisualStudio.TaskRunnerExplorer.14.0.14.0.0\lib\net40\Microsoft.VisualStudio.TaskRunnerExplorer.14.0.dll + + + ..\packages\Microsoft.VisualStudio.Text.Data.15.0.26228\lib\net45\Microsoft.VisualStudio.Text.Data.dll + + + ..\packages\Microsoft.VisualStudio.Text.Logic.15.0.26228\lib\net45\Microsoft.VisualStudio.Text.Logic.dll + + + ..\packages\Microsoft.VisualStudio.Text.UI.15.0.26228\lib\net45\Microsoft.VisualStudio.Text.UI.dll + + + ..\packages\Microsoft.VisualStudio.Text.UI.Wpf.15.0.26228\lib\net45\Microsoft.VisualStudio.Text.UI.Wpf.dll - ..\packages\VSSDK.TextManager.Interop.7.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.dll - True - False + ..\packages\Microsoft.VisualStudio.TextManager.Interop.7.10.6071\lib\net11\Microsoft.VisualStudio.TextManager.Interop.dll + + + ..\packages\Microsoft.VisualStudio.TextManager.Interop.12.1.DesignTime.12.1.30330\lib\net20\Microsoft.VisualStudio.TextManager.Interop.12.1.DesignTime.dll + True - ..\packages\VSSDK.TextManager.Interop.8.8.0.4\lib\net20\Microsoft.VisualStudio.TextManager.Interop.8.0.dll - True - False + ..\packages\Microsoft.VisualStudio.TextManager.Interop.8.0.8.0.50728\lib\net11\Microsoft.VisualStudio.TextManager.Interop.8.0.dll + + + ..\packages\Microsoft.VisualStudio.TextTemplating.15.0.15.0.26228\lib\net45\Microsoft.VisualStudio.TextTemplating.15.0.dll + + + ..\packages\Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.10.0.30319\lib\net40\Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll + + + ..\packages\Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.11.0.50727\lib\net45\Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll - - ..\packages\VSSDK.Threading.12.0.4\lib\net45\Microsoft.VisualStudio.Threading.dll - False + + ..\packages\Microsoft.VisualStudio.TextTemplating.Interfaces.15.0.15.0.26228\lib\net45\Microsoft.VisualStudio.TextTemplating.Interfaces.15.0.dll + + + ..\packages\Microsoft.VisualStudio.TextTemplating.VSHost.15.0.15.0.26228\lib\Microsoft.VisualStudio.TextTemplating.VSHost.15.0.dll + + + ..\packages\Microsoft.VisualStudio.Threading.15.0.240\lib\net45\Microsoft.VisualStudio.Threading.dll + + + ..\packages\Microsoft.VisualStudio.Utilities.15.0.26228\lib\net46\Microsoft.VisualStudio.Utilities.dll + + + ..\packages\Microsoft.VisualStudio.Validation.15.0.82\lib\net45\Microsoft.VisualStudio.Validation.dll + + + ..\packages\Microsoft.VisualStudio.Web.BrowserLink.12.0.12.0.0\lib\net40\Microsoft.VisualStudio.Web.BrowserLink.12.0.dll + + + ..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll ..\packages\Microsoft.WindowsAzure.ConfigurationManager.1.7.0.0\lib\net35-full\Microsoft.WindowsAzure.Configuration.dll True - ..\packages\Yagasoft.Libraries.EnhancedOrgService.5.3.2\lib\net462\Microsoft.Xrm.Client.dll + ..\packages\Yagasoft.Libraries.EnhancedOrgService.6.1.4\lib\net462\Microsoft.Xrm.Client.dll ..\packages\Microsoft.CrmSdk.CoreAssemblies.9.0.2.25\lib\net462\Microsoft.Xrm.Sdk.dll @@ -341,9 +451,17 @@ + + ..\packages\stdole.7.0.3302\lib\net10\stdole.dll + True + + + ..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll + + @@ -384,6 +502,38 @@ + + ..\packages\VSLangProj.7.0.3301\lib\net10\VSLangProj.dll + True + + + ..\packages\VSLangProj100.10.0.30320\lib\net20\VSLangProj100.dll + True + + + ..\packages\VSLangProj110.11.0.61031\lib\net20\VSLangProj110.dll + True + + + ..\packages\VSLangProj140.14.0.25030\lib\net20\VSLangProj140.dll + True + + + ..\packages\VSLangProj150.15.0.26229\lib\net20\VSLangProj150.dll + True + + + ..\packages\VSLangProj2.7.0.5001\lib\net11\VSLangProj2.dll + True + + + ..\packages\VSLangProj80.8.0.50728\lib\net11\VSLangProj80.dll + True + + + ..\packages\VSLangProj90.9.0.30730\lib\net10\VSLangProj90.dll + True + ..\packages\Extended.Wpf.Toolkit.2.8\lib\net40\Xceed.Wpf.AvalonDock.dll @@ -409,23 +559,14 @@ ..\packages\Extended.Wpf.Toolkit.2.8\lib\net40\Xceed.Wpf.Toolkit.dll True - - ..\packages\Yagasoft.Libraries.Common.2.4.5\lib\net462\Yagasoft.Libraries.Common.dll + + ..\packages\Yagasoft.Libraries.Common.3.4.1\lib\net462\Yagasoft.Libraries.Common.dll - - ..\packages\Yagasoft.Libraries.EnhancedOrgService.5.3.2\lib\net462\Yagasoft.Libraries.EnhancedOrgService.dll + + ..\packages\Yagasoft.Libraries.EnhancedOrgService.6.1.4\lib\net462\Yagasoft.Libraries.EnhancedOrgService.dll - - {1CBA492E-7263-47BB-87FE-639000619B15} - 8 - 0 - 0 - primary - False - False - {00020430-0000-0000-C000-000000000046} 2 @@ -591,6 +732,14 @@ + + + + + + + + true @@ -602,7 +751,14 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + +