【发布时间】:2015-10-29 19:24:30
【问题描述】:
我正在寻找一种通过执行以下步骤来运行代码的方法:
- 接收 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[] { });
}
【问题讨论】:
标签: c# .net runtime nuget add-in