#nuget #nuget-package
#nuget #nuget-пакет
Вопрос:
Я пытаюсь установить простой nuget-пакет программно. Я создал пакет с файлом Site.css в нем. Таким образом, он находится в папке содержимого пакета.
Используя этот код
public void TestInstall(string packageID, string physicalPath)
{
var rep = PackageRepositoryFactory.Default.CreateRepository(new PackageSource("http://nuget.testserver.lan/nuget", "Default"));
var packagemgr = new PackageManager(
rep,
new DefaultPackagePathResolver("http://nuget.testserver.lan/nuget"),
new PhysicalFileSystem(physicalPath)
);
var package = rep.FindPackagesById(packageID).First();
packagemgr.InstallPackage(package, false);
}
Допустим, я предоставляю PackageID = ‘Testpackage’ и physicalPath = ‘c:inetpubtest ‘ это создает:
c:InetpubtestTestpackage
и эта папка содержит:
папка содержимого с Site.css И тестовый пакет.0.1.nupkg
Не совсем то, что я пытаюсь сделать, но вроде того 🙂
Возможно ли изменить это так:
-
Я могу указать, куда он должен поместить пакет для его функциональности кэша
-
Заставить его размещать все, что находится в папке содержимого, по указанному пути?
-
Если пакет содержит библиотеки dll в папке lib, поместите их в каталог bin (создайте, если не существует)
Комментарии:
1. К сожалению, API direct PackageManager не настолько гибкий. Но вы можете взглянуть на то, что он делает внутренне, и изменить поведение.
Ответ №1:
Большая часть функциональности NuGet в настоящее время зависит от автоматизации Visual Studio, поэтому за пределами VS сложно добиться одинакового поведения.
Многие люди просили функциональность, которая потребовала бы изменений при использовании VS automation, поэтому я подозреваю, что это, вероятно, в дорожной карте, поскольку это значительная работа, я не думаю, что это будет скоро.
Не забывайте, что вы можете устанавливать пакеты в консоли Visual Package Manager, так что это всего лишь одна команда ( Install-Package MarkdownHelper
) и не требует перехода через пользовательский интерфейс.
Комментарии:
1. На самом деле это не так. Базовый API никоим образом не привязан к VS, просто у VS-клиента самая богатая реализация.
2. @dfowler Возможно, я неправильно сформулировал это. Я имел в виду, что некоторые функциональные возможности (например, добавление ссылок на проект и любых скриптов PS, которые управляют проектом / решением) будут работать только изнутри VS. Или, по крайней мере, так я понял?