我正在尝试使用Roslyn.Scripting.CSharp
对控制台shell进行编码。当然,用户可以使用host对象的方法动态添加对Session
的引用:
public void AddRef(string nameOrPath)
{
session.AddReference(nameOrPath);
}
public void AddRef(System.Reflection.Assembly asm)
{
session.AddReference(asm);
}
但我也希望他能够列出已加载的程序集。怎么做?
不工作/不好的解决方案:
AppDomain.CurrentDomain.GetAssemblies()
- 生成加载到AppDomain的所有程序集,这些程序集在Roslyn的脚本编写会话中不一定可用
使用ScriptEngine
的属性GetReferences()
- 正如我所理解的,它会返回会话范围的引用列表,而我的AddRef
方法不会更改它< / p>
收集自己添加的参考文献列表。但是如果引用是通过显示名称添加的呢?如何将string nameOrPath
转换为Assembly
类型?使用Roslyn.Compilers.MetadataReference
没有帮助,因为它没有引用Assembly
。