是否可以在运行时安装软件包的本地版本并使用该本地软件包?

时间:2019-07-23 13:18:45

标签: c# console nuget

作为尝试通过Console应用程序测试NuGet软件包的一部分,是否可以让Console应用程序以编程方式获取该NuGet软件包的最新版本,然后使用该软件包调用各种方法,而没有?这就是我要实现的流程...

  1. NuGet程序包是在本地创建的(已在构建过程中完成)
  2. 控制台应用程序将安装此软件包
  3. 同一控制台应用程序调用此程序包内的一些方法(如果此方法使用insdie insdie,则该控制台应用程序可以实现此目的)

如何实现?我已经使用NuGet.CoreNuGet.Protocol NuGet软件包尝试了以下代码...

// 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个控制台应用程序(一个安装到另一个中,然后调用方法),如果可以的话,该怎么做?

0 个答案:

没有答案