首页 > 解决方案 > 是否可以在运行时安装包的本地版本并使用所述本地包?

问题描述

作为尝试使用控制台应用程序测试 NuGet 包的一部分,是否可以让控制台应用程序以编程方式获取所述 NuGet 包的最新版本,然后使用所述包调用各种方法,而不是什么?这是我想要实现的流程......

  1. NuGet 包在本地创建(已作为构建过程的一部分完成)
  2. 控制台应用程序安装此包
  3. 同一个控制台应用程序调用了这个包内的一些方法(如果这使用反射在控制台应用程序中实现,这不是问题)

如何做到这一点?我已经使用NuGet.Core& NuGet.ProtocolNuGet 包尝试了以下代码......

// exception thrown for trying to resolving newtonsoft
IPackageRepository packageRepository = new NuGet.LocalPackageRepository(directoryPath);
PackageManager pm = new PackageManager(packageRepository, GetExecutingAssemblyDirectory());
pm.InstallPackage("package_id", SemanticVersion.Parse("package_version"));

NuGet.Common.ILogger logger = new Logger();
IEnumerable<LocalPackageInfo> packageInfos = LocalFolderUtility.GetPackagesV2(directoryPath, logger);
foreach (LocalPackageInfo lpi in packageInfos)
{
    // no obvious way to actually install the package
}

// never more than zero packages
var localRepo = new LocalPackageRepository(directoryPath);
var packages = localRepo.GetPackages();
if (packages?.Count() > 0)
{
    var packageManager = new PackageManager(localRepo, GetExecutingAssemblyDirectory());
    packageManager.InstallPackage(packages.ElementAt(0).Id);
}

我无法让任何这些代码工作。这真的可能吗?我是否必须考虑使用 2 个控制台应用程序(一个安装到另一个,然后调用方法),如果是这样,该怎么做?

标签: c#consolenuget

解决方案


推荐阅读