public override void RunFinished() { using (ThreadedWaitDialogProgressScope scope = new ThreadedWaitDialogProgressScope("Checking installed packages...")) { _packageService.InstallLatestPackages(scope, _currentProject); } using (ThreadedWaitDialogProgressScope scope = new ThreadedWaitDialogProgressScope("Checking resolved references...")) { // _referenceService.AddRequiredReferences(scope,_currentProject); Service.ReferenceService.EnsureReferences(scope, ReferencesOption.Common, _currentProject); Service.ReferenceService.EnsureReferences(scope, ReferencesOption.MSBuild, _currentProject); Service.ReferenceService.EnsureReferences(scope, ReferencesOption.Wpf, _currentProject); Service.ReferenceService.EnsureReferences(scope, ReferencesOption.EnvDTE, _currentProject); Service.ReferenceService.EnsureReferences(scope, ReferencesOption.Shell, _currentProject); } foreach (Reference reference in _project.References) { if (reference.Name.StartsWith("envdte", System.StringComparison.CurrentCultureIgnoreCase) || reference.Name.StartsWith("vslangproj", System.StringComparison.CurrentCultureIgnoreCase)) { if (reference is Reference5 reference5) { reference5.EmbedInteropTypes = false; } } } Refresher.RefreshProject(_currentProject); }
public void InstallLatestPackages(ThreadedWaitDialogProgressScope scope, Project project) { foreach (string packageId in packageIdList) { scope.Update( "Checking Packages", $"Checking if package {packageId} is installed", $"Checking if package {packageId} is installed", true ); if (GlobalServices.InstallerServices.IsPackageInstalled(project, packageId)) { continue; } try { scope.Update( "Installing Package", $"Installing latest package {packageId}", $"Installing latest package {packageId}", true ); GlobalServices.PackageInstaller2.InstallLatestPackage(null, project, packageId, true, false); } catch (Exception e) { Debug.Print(e.Message); } } }
public void AddRequiredReferences(ThreadedWaitDialogProgressScope scope, Project project) { VSProject vsproject = project.Object as VSProject; string[] referenceNames = GetReferences(vsproject).Select(r => r.Name).ToArray(); foreach (KeyValuePair <string, string> kvp in ReferenceDictionary) { scope.Update( "Checking Reference", $"Checking if reference {kvp.Key} has resolved", $"Checking if reference {kvp.Key} has resolved", true ); IEnumerable <string> enumerable = referenceNames; if (!enumerable.Contains(kvp.Key)) { try { scope.Update( "Adding Reference", $"Adding reference {kvp.Key} with path {kvp.Value}", $"Adding reference {kvp.Key} with path {kvp.Value}", true ); Reference newreference = vsproject.References.Add(kvp.Value); } catch (Exception e) { Debug.Print(e.Message); } } } }
private static void GenerateXamlPropertyRuleProjectItemsSchema(ThreadedWaitDialogProgressScope scope, ProjectItem folder, string content, string fileName) { scope.Update("Generating XamlPropertyRuleProjectItemsSchema", $"Creating {fileName}", $"Creating {fileName}", true); string directory = folder.FileNames[0]; string xamlPropertyRulePath = Path.Combine(directory, fileName); File.WriteAllText(xamlPropertyRulePath, content); SetXamlPropertyRuleProjectItemsSchemaBuildProperties(folder.ProjectItems.AddFromFile(xamlPropertyRulePath)); }
private static void GenerateXamlPropertyRuleCore(ThreadedWaitDialogProgressScope scope, ProjectItem folder, string content, string fileName) { scope.Update("Generating XamlPropertyRule", $"Creating {fileName}", $"Creating {fileName}", true); string directory = folder.FileNames[0]; string xamlPropertyRulePath = Path.Combine(directory, fileName); string codeBehindFilePath = Path.Combine(directory, $"{fileName}.cs"); string rootNamespace = folder.ContainingProject.Properties.Item("DefaultNamespace").Value.ToString(); string codeBehindContent = GenerateCodeBehindContent(Path.GetFileNameWithoutExtension(fileName), rootNamespace); File.WriteAllText(xamlPropertyRulePath, content); scope.Update("Generating XamlPropertyRule CodeBehind", $"Creating {fileName}.cs", $"Creating {fileName}.cs", true); File.WriteAllText(codeBehindFilePath, codeBehindContent); SetXamlPropertyRuleBuildProperties(folder.ProjectItems.AddFromFile(xamlPropertyRulePath)); }
protected override void RunStartedCore(Dictionary <string, string> replacementsDictionary) { using (ThreadedWaitDialogProgressScope scope = new ThreadedWaitDialogProgressScope("Generating XamlPropertyRules")) { ProjectItem rulesFolder = GetOrCreateRulesFolder(); IXamlPropertyRuleContext context = XamlPropertyRuleFactory.CreateXamlPropertyRuleContext(); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AnalyzerReferenceContent, "AnalyzerReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AppDesignerContent, "AppDesigner.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AssemblyInfoContent, "AssemblyInfo.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AssemblyReferenceContent, "AssemblyReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CompilerCommandLineArgsContent, "CompilerCommandLineArgs.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.COMReferenceContent, "COMReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ConfigurationGeneralContent, "ConfigurationGeneral.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ConfigurationGeneralFileContent, "ConfigurationGeneralFile.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ContentContent, "Content.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpContent, "CSharp.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.DebuggerGeneralContent, "DebuggerGeneral.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.DotNetCliToolReferenceContent, "DotNetCliToolReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.EmbeddedResourceContent, "EmbeddedResource.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.FolderContent, "Folder.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.NoneContent, "None.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.NuGetRestoreContent, "NuGetRestore.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.PackageReferenceContent, "PackageReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectDebuggerContent, "ProjectDebugger.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectReferenceContent, "ProjectReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.PSDbgContent, "PSDbg.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedAnalyzerReferenceContent, "ResolvedAnalyzerReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedAssemblyReferenceContent, "ResolvedAssemblyReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedCOMReferenceContent, "ResolvedCOMReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedPackageReferenceContent, "ResolvedPackageReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedProjectReferenceContent, "ResolvedProjectReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedSdkReferenceContent, "ResolvedSdkReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SdkReferenceContent, "SdkReference.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SourceControlContent, "SourceControl.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SpecialFolderContent, "SpecialFolder.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SubProjectContent, "SubProject.xaml"); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.GeneralBrowseObjectContent, "GeneralBrowseObject.xaml", XamlPropertyRuleOption.XamlPropertyRuleNoCodeBehind); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpBrowseObjectContent, "CSharpBrowseObject.xaml", XamlPropertyRuleOption.XamlPropertyRuleNoCodeBehind); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectItemsSchemaContent, "ProjectItemsSchema.xaml", XamlPropertyRuleOption.XamlPropertyRuleProjectItemsSchema); XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpProjectItemsSchemaContent, "CSharpProjectItemsSchema.xaml", XamlPropertyRuleOption.XamlPropertyRuleProjectItemsSchema); } }
public static void GenerateXamlPropertyRule(ThreadedWaitDialogProgressScope scope, ProjectItem folder, string content, string fileName, XamlPropertyRuleOption option = XamlPropertyRuleOption.XamlPropertyRule) { switch (option) { case XamlPropertyRuleOption.XamlPropertyRule: GenerateXamlPropertyRuleCore(scope, folder, content, fileName); break; case XamlPropertyRuleOption.XamlPropertyRuleNoCodeBehind: GenerateXamlPropertyRuleNoCodeBehind(scope, folder, content, fileName); break; case XamlPropertyRuleOption.XamlPropertyRuleProjectItemsSchema: GenerateXamlPropertyRuleProjectItemsSchema(scope, folder, content, fileName); break; default: throw new ArgumentOutOfRangeException(nameof(option), option, null); } }
public void EnsureReferences(ThreadedWaitDialogProgressScope scope, ReferencesOption option, Project project) { IEnumerable <MetadataReference> optionReferences = GetList(option); ImmutableList <MetadataReference> currentReferences = project.MetadataReferences.ToImmutableList(); foreach (MetadataReference reference in optionReferences) { scope.Update( "Checking References", $"Checking if reference {reference.Display} has resolved", $"Checking if reference {reference.Display} has resolved", true ); if (currentReferences.Contains(reference)) { continue; } scope.Update( "Adding References", $"Adding reference {reference.Display}", $"Adding reference {reference.Display}" ); project = project.AddMetadataReference(reference); try { _workspace.TryApplyChanges(project.Solution); } catch (Exception e) { Debug.Print(e.Message); } } }
public void EnsureReferences(ThreadedWaitDialogProgressScope scope, ReferencesOption option, EnvDTE.Project project) { Project newProject = EquivalencyProvider.GetEquivalent(project); EnsureReferences(scope, option, newProject); }