shamjid Ответов: 1

Как программно установить пакет NuGet?


I want to programmatically install a NuGet package to a project, and update the .csproj file, and the packages.config file.
Прямо сейчас я могу добавить DLL из Nuget в package .config,но не смог обновить файл.cs proj.

string packageID = "Newtonsoft.json";
var sourceUri = new Uri("https://packages.nuget.org/api/v2");

// Return an IPackage
var package = GetNugetPackage(packageID, sourceUri);

IPackageRepository sourceRepository = PackageRepositoryFactory.Default.CreateRepository(sourceUri.ToString());

string packagesPath = "../../TestFiles/packages";
PackageManager packageManager = new PackageManager(sourceRepository, packagesPath);

packageManager.InstallPackage(packageID, SemanticVersion.Parse(package.Version.ToFullString()));

// ---- Update the ‘packages.config’ file ----
var packageReferenceFile = new PackageReferenceFile("../../TestFiles/packages.config");

// Get the target framework of the current project to add --> targetframework="net452" attribute in the package.config file
var currentTargetFw = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(TargetFrameworkAttribute), false);
var targetFrameworkAttribute = ((TargetFrameworkAttribute[])currentTargetFw).FirstOrDefault();

// Update the packages.config file    
packageReferenceFile.AddEntry(package.GetFullName(), SemanticVersion.Parse(package.Version.ToFullString()), false, new FrameworkName(targetFrameworkAttribute.FrameworkName));


Что я уже пробовал:

StackOverflow: Как программно установить пакет NuGet?[^]

Graeme_Grant

Я не понимаю. Какие шаги вы сейчас делаете?

1 Ответов

Рейтинг:
1

Graeme_Grant

Может быть, один из этих видео YouTube[^] ответит на ваш вопрос за вас.

Редактировать: С помощью ссылки, предоставленной вами, Томас дает отличное решение в своем Ответ[^]


shamjid

Из решения Томаса я не могу получить доступ к "MSBuildProjectSystem", хотя я ссылался на ссылку Nuget.core.Вот в чем моя проблема

"var project = new MSBuildProjectSystem(csprojFilePath); "

Graeme_Grant

Я не собираюсь отлаживать ваш код для вас. Отправьте свой вопрос Томасу [edit: on stackoverflow], поскольку вы используете именно его код. Может быть, у него есть какие-то указания для тебя.