Использование nuget для обновления файлов проекта вне консоли диспетчера пакетов

Nuget.exe поддерживает управление пакетами только на уровне файловой системы / конфигурации. Команды powershell управляют магией, которая обновляет файлы.proj.

С учетом сказанного, мне нужна возможность обновить файл csproj последней версией пакета NuGet за пределами Visual Studio (автоматизировано).

В основном, как я могу использовать Install-Package (или любой другой метод) внутри собственного внешнего сценария powershell?

ОБНОВИТЬ:

Я хотел бы иметь возможность добавлять ссылки на проекты вне VS по следующей причине.

В моей компании много общих библиотек, которые в некоторых случаях зависят друг от друга. Я использую TFS Nugetter для создания и публикации пакетов nuget из TFS. Я хочу убедиться, что разработчики не могут поставить в очередь сборку (пакет), если проект не может быть собран и запущен на всех более новых версиях. Это гарантирует, что все более новые версии библиотек будут работать со всеми более новыми версиями его зависимостей. Если сборка не удалась, вам нужно обновить ссылку на nuget в VS и исправить ошибки компилятора / модульные тесты.

Я просматривал исходный код NuGet и думаю, что нашел простой способ повторно использовать исходный код NuGet для изменения файлов proj вне VS (вроде).

System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
var dte = (DTE)System.Activator.CreateInstance(t, true); 
dte.Solution.Open( 
    @"C:\Users\paul.knopf\Documents\Visual Studio 2010\Projects\SLNMemory\SLNMemory.sln");

По сути, откройте версию Visual Studio в памяти, выполните команды nuget и сохраните.

На этапе сборки, после GetWorkspace, я хотел бы запустить это в памяти и обновить все ссылки на nuget до последней версии.

Как вы думаете? Это определенно будет медленно, но мы будем работать на одной и той же базе кода и иметь всю необходимую нам функциональность.

1 ответ

Автоматизация Visual Studio, как вы описываете, безусловно, возможна.

Другой способ, которым я пользовался, - это использование SharpDevelop для установки пакетов NuGet вне Visual Studio. Командлеты NuGet PowerShell были изменены, чтобы принять решение, и вы могли автоматизировать установку, включая использование сценариев PowerShell в пакете NuGet, из командной строки. Код не был обновлен, поэтому он нацелен на старую версию NuGet, но может быть обновлен. Опять же, это похоже на ваше решение и довольно тяжеловесное решение.

Другие вопросы по тегам