Я не понимаю, какие способы управления пакетами вы используете сейчас, но если это packages.config
, то я думаю, что лучше перейти на PackageReference
. Он может использовать NuGet PackageReference Upgrader , который конвертирует ваши зависимости из файла packages.config в формат PackageReference
.
После этого вы можете добавлять / удалять наши пакеты с интерфейсом диспетчера пакетов NuGet , который встроен в Visual Studio 2017
.
UPD2 . Visual Studio 17 Preview 3
имеет инструмент для миграции с packages.config
на PackageReference
.
Также MSBuild 15.1 +
имеет встроенных NuGet
целей, таких как restore и pack , которые можно комбинировать с пользовательскими целями сборки. Это облегчает процесс сборки.
Если вы все еще хотите написать программу для добавленных ссылок на .csproj
, вы можете создать расширение для Visual Studio
.
UPD1 . Получите IEnumerable<Project>
из GlobalProjectCollection и проанализируйте имена библиотек из атрибутов Include:
GetReferences
-
public static IEnumerable<string> GetReferences(IEnumerable<Project> project)
{
return project.Select(p => p.GetItems("Reference").Select(i => i.EvaluatedInclude);
}
После этого проверьте доступность этой библиотеки в вашем NuGet
хранилище с помощью вашего кода и, если существует, удалите текущую ссылку и создайте новую:
CreateReference
using Microsoft.Build.Evaluation;
using System.Collections.Generic;
namespace NuGetReference
{
public static class Reference
{
public static void CreateReference(string projectName, string packageName, string packageVersion)
{
Project project = ProjectCollection.GlobalProjectCollection.LoadProject(projectName);
project.AddItemFast("PackageReference", packageName, new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("Version", packageVersion) });
project.Save();
}
}
}
Миграция из packages.config в PackageReference | Класс проекта | GlobalProjectCollection | AddItemFast