我正在寻找一种通过执行以下步骤来运行代码的方法:
- 接收NuGet包列表(元组列表(“包名称”,“包版本”,“主类路径”))。
- 在本地目录中检索它们(参见代码示例#1)
- 在运行时加载它们到我的程序中
- 通过内省运行主类(参见代码示例#2)
目前,我正在努力完成第三步。我找不到如何在运行时加载我的包的方法。
我的主要问题是:
- 如何找出检索到的包存储在哪些文件夹中?
- 如何将这些目录的内容加载到我的程序中?
代码示例#1:
private static void getPackageByNameAndVersion(string packageID, string version)
{
IPackageRepository repo =
PackageRepositoryFactory.Default
.CreateRepository("https://packages.nuget.org/api/v2");
string path = "C:/tmp_repo";
PackageManager packageManager = new PackageManager(repo, path);
Console.WriteLine("before dl pkg");
packageManager.InstallPackage(packageID, SemanticVersion.Parse(version));
}
代码示例#2:
private static void loadByAssemblyNameAndTypeName(string assemblyName, string typeName)
{
AppDomain isolationAppDomain = AppDomain.CreateDomain("tmp");
object a = isolationAppDomain.CreateInstanceAndUnwrap(assemblyName, typeName);
Type x = a.GetType();
MethodInfo m = x.GetMethod("Main");
m.Invoke(a, new object[] { });
}