Как установить NuGet-пакетов с помощью автоматизации EnvDTE.ДТЕ?
Я создал одно консольное приложение для прагматичного создания проекта visual studio, здесь я не могу установить пакеты Nuget, всегда var componentModel = (IComponentModel)пакет.GetGlobalService(typeof(SComponentModel)); оператор возвращает null ценности. для вашей справки я добавил свой код ниже. Помогите мне решить этот вопрос.
static void Main(string[] args) { //InstallNuGetPackages.InstallNuGet(""); string ProjectName = "WebAPIProj"; string SolutionName = "EmptyTemplate"; System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.11.0"); Object obj = System.Activator.CreateInstance(type, true); EnvDTE.DTE dte = (EnvDTE.DTE)obj; dte.MainWindow.Visible = true; // optional if you want to See VS doing its thing // create a new solution dte.Solution.Create("C:\\"+ SolutionName + "\\", SolutionName); var solution = dte.Solution; // create a C# WinForms app solution.AddFromTemplate(@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplatesCache\CSharp\Web\1033\EmptyWebApplicationProject40\EmptyWebApplicationProject40.vstemplate", @"C:\NewSolution\"+ ProjectName, ProjectName); InstallNuGetPackages.InstallNuGet(dte); foreach (var p in dte.Solution.Projects) { InstallNuGetPackages.InstallNuGet((Project)p, "Microsoft.AspNet.WebApi version1.1"); } // save and quit dte.ExecuteCommand("File.SaveAll"); dte.Quit(); }
Код для установки пакетов Nuget
public bool InstallNuGetPackage(Project project, string package) { bool installedPkg = true; try { var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel)); //Always this statement returns null IVsPackageInstallerServices installerServices = componentModel.GetService(); if (!installerServices.IsPackageInstalled(project, package)) { var installer = componentModel.GetService(); installer.InstallPackage(null, project, package, (System.Version)null, false); } } catch (Exception ex) { installedPkg = false; } return installedPkg; }
Что я уже пробовал:
Не в состоянии установить пакеты Nuget прагматично.