Ответ 1
Так как по-прежнему нет встроенных функций для установки/обновления пакетов из онлайн-репо, вот небольшое обходное решение, которое может помочь:
Предпосылки
Сначала установите пакет NuGet.VisualStudio nuget в свой проект. Вы получите это от здесь
При установке пакет автоматически установит свойство Embed Interop Types ссылки на сборку True. Причина, по которой это делается, - сделать ваш код устойчивым к изменениям версии, когда пользователи будут обновлены до более новых версий NuGet.
По той же причине вы должны НЕ использовать любые другие типы, кроме вышеуказанных интерфейсов в вашем коде. Вы также НЕ должны ссылаться на любые другие сборки NuGet, включая NuGet.Core.dll.
После настройки всего этого, вы можете сделать следующее в RunFinished
-Method:
var componentModel = (IComponentModel) Package.GetGlobalService(typeof(SComponentModel));
IVsPackageInstallerServices installerServices =
componentModel.GetService<IVsPackageInstallerServices>();
if (!installerServices.IsPackageInstalled(project, "Newtonsoft.Json")) {
var installer = componentModel.GetService<IVsPackageInstaller>();
installer.InstallPackage(
"All",
project,
"Newtonsoft.Json",
(System.Version) null,
false);
}
Примечание
В этом примере показано на основе Newtonsoft.Json
, как вы можете установить пакет.
Конечно, вы можете выбрать проекты, предназначенные для установки. Также вы можете определить версию, которая будет установлена.
Кажется, немного неудобно, но, к сожалению, нет другого пути.
Usings
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell;
using NuGet.VisualStudio;
Сообщите мне, если это поможет!