我正在以程序化的方式安装一个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,)'
答案 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。
希望这有帮助。