本文介绍了如何使用ENVDTE.DTE安装NuGet包?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个用于实际创建visual studio项目的控制台应用程序,这里我无法安装Nuget包,总是 var componentModel =(IComponentModel)Package.GetGlobalService(typeof(SComponentModel));语句返回null 值。供您参考我在下面添加了我的代码。帮我解决这个问题。



I created one console application to create visual studio project pragmatically, here i am not able install Nuget packages, always var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel)); statement returns null values. for your reference i added my code below. Help me to resolve this issue.

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套餐的代码





Code to install Nuget Packages

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软件包。



What I have tried:

Not able to install Nuget packages pragmatically.

推荐答案


这篇关于如何使用ENVDTE.DTE安装NuGet包?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 02:53