Nuget IVsPackageInstaller挂起

时间:2015-08-21 23:00:44

标签: c# visual-studio nuget vsix

使用此代码:

public void InstallPackage(Project project, string packageId, string version, string packageSource)
{
    var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel));
    var installer = componentModel.GetService<IVsPackageInstaller>();

    installer.InstallPackage(packageSource, project, packageId, version, false);
}

例如,当我尝试安装EntityFramework 6.1.3时,它只会挂在installer.InstallPackage()行上。我已经让它长达10分钟,没有任何回复,错误,信息或任何关于发生了什么的指示。

我已经尝试了以下软件包来源:

  1. https://nuget.org/api/v2
  2. 下载包并引用本地仓库(例如C:\ Nuget)
  3. 所有结果都相同。 我尝试的每个包都会发生同样的事情(Newtonsoft.JsonUnity等),所以它不只是EntityFramework

    这是在VS 2015和.Net 4.5.1中运行的。 我引用了NuGet.VisualStudio 2.8.6包,但我也尝试过2.8.5和2.8.3但没有成功。

    手动安装软件包(通过Visual Studio中的NuGet软件包管理器UI)按预期工作。

    我还尝试了NuGet.CommandLine 2.8.6包,其实现如下:

    public void InstallPackage(Project project, string packageId, string version, string packageSource)
    {
        var repo = PackageRepositoryFactory.Default.CreateRepository("https://nuget.org/api/v2");
    
        // Get the package install path
        var solutionDirectory = Path.GetDirectoryName(project.DTE.Solution.FullName);
        var path = Path.Combine(solutionDirectory, "packages");
    
        // Initialize the package manager
        var packageManager = new PackageManager(repo, path);
    
        // Download and unzip the package
        packageManager.InstallPackage(packageId, SemanticVersion.Parse(version));
    
        var projectSystem = new MSBuildProjectSystem(project.FullName);
        var localRepository = PackageRepositoryFactory.Default.CreateRepository(path);
        var pathResolver = new DefaultPackagePathResolver(path);
        var projectManager = new ProjectManager(localRepository, pathResolver, projectSystem, repo);
    
        // Add references to project
        projectManager.AddPackageReference(packageId, SemanticVersion.Parse(version));
    }
    

    成功下载程序包,但无法使用此错误添加对项目的引用:

      

    &#34;&#39; AdaptiveTriggerLibrary 1.0.3&#39;包需要NuGet客户端版本&#39; 3.0&#39;或以上,但目前的NuGet版本为&#39; 2.8.60717.93&#39;。&#34;

    我不确定为什么它需要AdaptiveTriggerLibrary 1.0.3,我认为它是EntityFramework的依赖。

    我追踪了一个3.1 beta的NuGet.exe并引用了它。事实证明IProjectSystem类已从MSBuildProjectSystem类中删除了 - 没有其他可用的选项(我可以找到),所以我甚至无法进入我可以编译的状态那个版本。看起来很破碎。

    有什么想法吗? 我想要的是vsix将nuget包安装到项目中的方法。

0 个答案:

没有答案