c# - 是否可以在运行时安装包的本地版本并使用所述本地包?
问题描述
作为尝试使用控制台应用程序测试 NuGet 包的一部分,是否可以让控制台应用程序以编程方式获取所述 NuGet 包的最新版本,然后使用所述包调用各种方法,而不是什么?这是我想要实现的流程......
- NuGet 包在本地创建(已作为构建过程的一部分完成)
- 控制台应用程序安装此包
- 同一个控制台应用程序调用了这个包内的一些方法(如果这使用反射在控制台应用程序中实现,这不是问题)
如何做到这一点?我已经使用NuGet.Core
& NuGet.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 个控制台应用程序(一个安装到另一个,然后调用方法),如果是这样,该怎么做?
解决方案
推荐阅读
- angular11 - 在 ej2 syncfusion 角度网格中,在一个字段中输入一些数据后添加或编辑行时如何禁用另一个字段
- php - laravel 8 我想在过滤 cakephp 之前从所有控制器(如 app 控制器)访问方法。我怎么能在 laravel8 中做到这一点?
- html - 如何在两个标题之间适应并自动移动和缩放图像?
- php - 如何使用 PHP 显示我的多页项目?
- c# - 在 NetStandard 2.0 类库中托管 WCF 服务
- javascript - 在前端使用shopify admin api时出现CORS错误
- python - 使用 PyPdf multi_cell() 显示带重音符号的字符
- javascript - 在 Laravel 中按类别过滤数据
- pine-script - Pinescript 获取最低随机值的价格值
- regex - Perl:用于匹配和替换单词和可选句号的正则表达式