时间:2017-11-29 18:53:03

标签: c# visual-studio nuget

我正在以程序化的方式安装一个nuget包。我有2个nuget源src1和src2。 MyNugetPackage有一些依赖关系AAA和BBB。 MyNugetPackage可通过src1获得,AAA和BBB可通过src2获得。我在源src1上找到错误包AAA和BBB。如何让installPackage包从src1安装MyNugetPackage,从src2安装AAA BBB?我指定“全部”是来源。

var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel));

var installerServices = componentModel.GetService<IVsPackageInstallerServices>();
var installer = componentModel.GetService<IVsPackageSourceProvider>();
installer.InstallPackage("All", project, "MyNugetPackage", (Version)null, false);

我尝试从Package Manager控制台安装,但是即使文件夹c:\ users \ user \ Source \ Repos \ Testpro \ packages中存在AAA.2.0.0和BBB.2.0.0,也会出现以下错误:< / p>

  

安装失败。   滚回来...   程序'Testpro'中不存在包'MyNugetPackage.5.6.1.7358:AAA [2.0.0,),BBB [2.0.0,)'   软件包'c:\ users \ user \ Source \ Repos \ Testpro \ packages'

中不包含'MyNugetPackage.5.6.1.7358:AAA [2.0.0,),BBB [2.0.0,)'

1 个答案:

答案 0 :(得分:0)

  

在源

上找不到IVsPackageInstaller包

据我所知,NuGet Visual Studio扩展3.x及更高版本不支持&#34; All&#34;资源。 NuGet 2.x中确实存在此功能。所以&#34; All&#34;关键字在3.x NuGet Visual Studio扩展中没有特殊含义。

要解决此问题,您可以尝试&#34; null&#34;来源而不是&#34; All&#34;。使用null是从用户配置的包源安装包的推荐方法。

有关详细信息,请参阅similar issue on GitHub

希望这有帮助。